
bin/main.elf:     file format elf32-littlearm

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001268  00000000  00000000  00010000  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .text.arm_Init 00000138  00001268  00001268  00011268  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .text._start  00000048  000013a0  000013a0  000113a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  3 .text.nmi_ISR 00000020  000013e8  000013e8  000113e8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  4 .text.hardFault_ISR 00000050  00001408  00001408  00011408  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  5 .text.memManage_ISR 00000020  00001458  00001458  00011458  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  6 .text.busFault_ISR 00000020  00001478  00001478  00011478  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  7 .text.usageFault_ISR 00000020  00001498  00001498  00011498  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  8 .text.svc_ISR 00000020  000014b8  000014b8  000114b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  9 .text.debugMon_ISR 00000020  000014d8  000014d8  000114d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 10 .text.pendSV_ISR 00000020  000014f8  000014f8  000114f8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 11 .text.wdt_ISR 00000020  00001518  00001518  00011518  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 12 .text.timer0_ISR 00000020  00001538  00001538  00011538  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 13 .text.timer2_ISR 00000020  00001558  00001558  00011558  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 14 .text.timer3_ISR 00000020  00001578  00001578  00011578  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 15 .text.uart1_ISR 00000020  00001598  00001598  00011598  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 16 .text.uart2_ISR 00000020  000015b8  000015b8  000115b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 17 .text.uart3_ISR 00000020  000015d8  000015d8  000115d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 18 .text.pwm_ISR 00000020  000015f8  000015f8  000115f8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 19 .text.i2c0_ISR 00000020  00001618  00001618  00011618  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 20 .text.i2c1_ISR 00000020  00001638  00001638  00011638  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 21 .text.i2c2_ISR 00000020  00001658  00001658  00011658  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 22 .text.spi_ISR 00000020  00001678  00001678  00011678  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 23 .text.ssp0_ISR 00000020  00001698  00001698  00011698  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 24 .text.ssp1_ISR 00000020  000016b8  000016b8  000116b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 25 .text.pll0_ISR 00000020  000016d8  000016d8  000116d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 26 .text.rtc_ISR 00000020  000016f8  000016f8  000116f8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 27 .text.eint0_ISR 00000020  00001718  00001718  00011718  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 28 .text.eint1_ISR 00000020  00001738  00001738  00011738  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 29 .text.eint2_ISR 00000020  00001758  00001758  00011758  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 30 .text.eint3_ISR 00000020  00001778  00001778  00011778  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 31 .text.adc_ISR 00000020  00001798  00001798  00011798  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 32 .text.bod_ISR 00000020  000017b8  000017b8  000117b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 33 .text.usbHost_ISR 00000020  000017d8  000017d8  000117d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 34 .text.can_ISR 00000020  000017f8  000017f8  000117f8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 35 .text.dma_ISR 00000020  00001818  00001818  00011818  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 36 .text.i2s_ISR 00000020  00001838  00001838  00011838  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 37 .text.enet_ISR 00000020  00001858  00001858  00011858  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 38 .text.rit_ISR 00000020  00001878  00001878  00011878  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 39 .text.mcpwm_ISR 00000020  00001898  00001898  00011898  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 40 .text.qei_ISR 00000020  000018b8  000018b8  000118b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 41 .text.pll1_ISR 00000020  000018d8  000018d8  000118d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 42 .text.usbAct_ISR 00000020  000018f8  000018f8  000118f8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 43 .text.canAct_ISR 00000020  00001918  00001918  00011918  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 44 .text.uart4_ISR 00000020  00001938  00001938  00011938  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 45 .text.ssp2_ISR 00000020  00001958  00001958  00011958  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 46 .text.lcd_ISR 00000020  00001978  00001978  00011978  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 47 .text.gpio_ISR 00000020  00001998  00001998  00011998  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 48 .text.pwm0_ISR 00000020  000019b8  000019b8  000119b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 49 .text.eeprom_ISR 00000020  000019d8  000019d8  000119d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 50 .text.nvic_setPendingIRQ 0000001a  000019f8  000019f8  000119f8  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 51 .text.nvic_enableIRQ 00000004  00001a12  00001a12  00011a12  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 52 .text.nvic_clearPendingIRQ 00000018  00001a18  00001a18  00011a18  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 53 .text.nvic_setPriority 00000044  00001a30  00001a30  00011a30  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 54 .text.nvic_SetIntHandler 0000000c  00001a74  00001a74  00011a74  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 55 .text.iap_Call 0000001c  00001a80  00001a80  00011a80  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 56 .text.iap_PrepareSectors 00000034  00001a9c  00001a9c  00011a9c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 57 .text.iap_CopyRAMtoFLASH 00000070  00001ad0  00001ad0  00011ad0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 58 .text.iap_EraseSectors 00000050  00001b40  00001b40  00011b40  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 59 .text.iap_ClearSectors 0000001c  00001b90  00001b90  00011b90  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 60 .text.iap_Compare 0000005c  00001bac  00001bac  00011bac  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 61 .text.iap_AddressToSector 0000002c  00001c08  00001c08  00011c08  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 62 .text.iap_WriteSectors 0000005e  00001c34  00001c34  00011c34  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 63 .text.systime_Init 0000005c  00001c94  00001c94  00011c94  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 64 .text.systime_SetIntHandler 00000014  00001cf0  00001cf0  00011cf0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 65 .text.sysTick_ISR 00000064  00001d04  00001d04  00011d04  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 66 .text.delay   00000006  00001d68  00001d68  00011d68  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 67 .text.uart0_SetBaudrate 000000ec  00001d70  00001d70  00011d70  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 68 .text.uart0_Init 000000a8  00001e5c  00001e5c  00011e5c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 69 .text.uart0_GetChar 00000044  00001f04  00001f04  00011f04  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 70 .text.uart0_PutChar 00000068  00001f48  00001f48  00011f48  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 71 .text.uart0_BasicPutChar 0000001c  00001fb0  00001fb0  00011fb0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 72 .text.uart0_ISR 000000b4  00001fcc  00001fcc  00011fcc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 73 .text.timer1_Set 00000018  00002080  00002080  00012080  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 74 .text.timer1_SetIntHandler 00000010  00002098  00002098  00012098  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 75 .text.timer1_ClearIntHandler 00000014  000020a8  000020a8  000120a8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 76 .text.timer1_Init 00000050  000020bc  000020bc  000120bc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 77 .text.timer1_SetMatch0 0000000c  0000210c  0000210c  0001210c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 78 .text.timer1_ISR 0000003c  00002118  00002118  00012118  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 79 .text.ssp1_SetClockFreq 00000030  00002154  00002154  00012154  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 80 .text.spp1_SetMode 00000018  00002184  00002184  00012184  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 81 .text.ssp1_Init 00000064  0000219c  0000219c  0001219c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 82 .text.ssp1_TransferByte 00000024  00002200  00002200  00012200  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 83 .text.showVicError 000000c8  00002224  00002224  00012224  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 84 .text.startup.main 000000c8  000022ec  000022ec  000122ec  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 85 .text.app_Init 000000ac  000023b4  000023b4  000123b4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 86 .text.app_Tick 000000a8  00002460  00002460  00012460  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 87 .text.app_Process 0000035c  00002508  00002508  00012508  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 88 .text.flash_SaveLog 0000006c  00002864  00002864  00012864  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 89 .text.check_Values 00000074  000028d0  000028d0  000128d0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 90 .text.par_ValuesDefaults 00000038  00002944  00002944  00012944  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 91 .text.flash_Save 00000088  0000297c  0000297c  0001297c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 92 .text.flash_Load 000000b8  00002a04  00002a04  00012a04  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 93 .text.flash_ClearLogError 00000024  00002abc  00002abc  00012abc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 94 .text.flash_SaveLogError 0000002c  00002ae0  00002ae0  00012ae0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 95 .text.prompt_ClearTicks 00000010  00002b0c  00002b0c  00012b0c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 96 .text.prompt_LogErrorShow 00000050  00002b1c  00002b1c  00012b1c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 97 .text.prompt_STS 00000150  00002b6c  00002b6c  00012b6c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 98 .text.prompt_Reconfig 0000000e  00002cbc  00002cbc  00012cbc  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 99 .text.prompt_LogErrorClear 0000000a  00002cca  00002cca  00012cca  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
100 .text.prompt_Hand 00000020  00002cd4  00002cd4  00012cd4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
101 .text.prompt_Park 0000000a  00002cf4  00002cf4  00012cf4  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
102 .text.prompt_ServoConfig 000000b0  00002d00  00002d00  00012d00  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
103 .text.prompt_Dump 0000008a  00002db0  00002db0  00012db0  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
104 .text.prompt_Beep 0000001a  00002e3a  00002e3a  00012e3a  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
105 .text.prompt_ServoEnable 00000048  00002e54  00002e54  00012e54  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
106 .text.prompt_Servo 00000074  00002e9c  00002e9c  00012e9c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
107 .text.prompt_Relay 00000068  00002f10  00002f10  00012f10  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
108 .text.prompt_ServoOffset 0000005c  00002f78  00002f78  00012f78  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
109 .text.prompt_Process 00000088  00002fd4  00002fd4  00012fd4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
110 .text.onKeyDown 00000034  0000305c  0000305c  0001305c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
111 .text.onKeyPress 00000018  00003090  00003090  00013090  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
112 .text.onKeyUp 00000018  000030a8  000030a8  000130a8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
113 .text.relay_Init 00000030  000030c0  000030c0  000130c0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
114 .text.relay_Set 00000030  000030f0  000030f0  000130f0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
115 .text.relay_Tick 00000080  00003120  00003120  00013120  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
116 .text.servo_Config 00000094  000031a0  000031a0  000131a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
117 .text.servo_Offset 00000040  00003234  00003234  00013234  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
118 .text.servo_SetPos 00000088  00003274  00003274  00013274  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
119 .text.servo_Hand 00000018  000032fc  000032fc  000132fc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
120 .text.servo_Parking 0000003c  00003314  00003314  00013314  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
121 .text.servo_Init 00000004  00003350  00003350  00013350  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
122 .text.crc16_Right 00000046  00003354  00003354  00013354  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
123 .text.crc16_MODBUS 0000000c  0000339a  0000339a  0001339a  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
124 .text.print_putchar 00000074  000033a8  000033a8  000133a8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
125 .text.print_fill 0000001a  0000341c  0000341c  0001341c  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
126 .text.print_int 00000058  00003436  00003436  00013436  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
127 .text.print_long 0000004e  0000348e  0000348e  0001348e  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
128 .text.print_float 000000b4  000034dc  000034dc  000134dc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
129 .text.rprintf_RegisterDev 00000030  00003590  00003590  00013590  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
130 .text.lputchar_RegisterDev 0000000c  000035c0  000035c0  000135c0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
131 .text.ldebug_RegisterDev 0000000c  000035cc  000035cc  000135cc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
132 .text.lgetchar_RegisterDev 0000000c  000035d8  000035d8  000135d8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
133 .text.doprint 00000378  000035e4  000035e4  000135e4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
134 .text.lgetchar 0000000c  0000395c  0000395c  0001395c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
135 .text.rprintf 0000002a  00003968  00003968  00013968  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
136 .text.buffer_Init 0000000c  00003992  00003992  00013992  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
137 .text.buffer_GetFromFront 00000044  0000399e  0000399e  0001399e  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
138 .text.buffer_AddToEnd 0000003a  000039e2  000039e2  000139e2  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
139 .text.buffer_IsEmpty 0000000c  00003a1c  00003a1c  00013a1c  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
140 .text.put_dump16 00000094  00003a28  00003a28  00013a28  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
141 .text.xatoi   000000a8  00003abc  00003abc  00013abc  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
142 .text.ledError_Init 00000018  00003b64  00003b64  00013b64  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
143 .text.ledError_Tick 00000090  00003b7c  00003b7c  00013b7c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
144 .text.gKey_Init 00000024  00003c0c  00003c0c  00013c0c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
145 .text.gKey_Tick 00000014  00003c30  00003c30  00013c30  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
146 .text.gKey_Process 000000a8  00003c44  00003c44  00013c44  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
147 .text.beep_SetType 00000088  00003cec  00003cec  00013cec  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
148 .text.beep_Init 0000002c  00003d74  00003d74  00013d74  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
149 .text.beep_Play 00000024  00003da0  00003da0  00013da0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
150 .text.beep_Tick 0000008c  00003dc4  00003dc4  00013dc4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
151 .text.cli_GetLine 000000f4  00003e50  00003e50  00013e50  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
152 .text.cli_Help 00000098  00003f44  00003f44  00013f44  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
153 .text.cli_ArgsParse 000000f0  00003fdc  00003fdc  00013fdc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
154 .text.cli_ArgsDispatch 000000a0  000040cc  000040cc  000140cc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
155 .text.lcd_command 0000001a  0000416c  0000416c  0001416c  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
156 .text.lcd_PutChar 0000001a  00004186  00004186  00014186  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
157 .text.lcd_Clear 00000018  000041a0  000041a0  000141a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
158 .text.lcd_SetCursor 0000002c  000041b8  000041b8  000141b8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
159 .text.lcd_Display 00000018  000041e4  000041e4  000141e4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
160 .text.lcd_Init 000000b0  000041fc  000041fc  000141fc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
161 .text.lcd_printfInit 00000020  000042ac  000042ac  000142ac  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
162 .text.lcd_printf 0000005c  000042cc  000042cc  000142cc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
163 .text.lcd_config_ports 00000028  00004328  00004328  00014328  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
164 .text.lcd_read 00000090  00004350  00004350  00014350  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
165 .text.lcd_write 000000c8  000043e0  000043e0  000143e0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
166 .text.servus_SetPin 00000064  000044a8  000044a8  000144a8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
167 .text.servus_CallSytem 00000054  0000450c  0000450c  0001450c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
168 .text.servus_Init 000000b8  00004560  00004560  00014560  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
169 .text.servus_SetPos 00000034  00004618  00004618  00014618  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
170 .text.servus_Enable 0000002c  0000464c  0000464c  0001464c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
171 .text.servus_Enabled 00000020  00004678  00004678  00014678  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
172 .text.__swap  0000002a  00004698  00004698  00014698  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
173 .text.joy_Init 00000028  000046c4  000046c4  000146c4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
174 .text.joy_Read 00000010  000046ec  000046ec  000146ec  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
175 .text.joy_Tick 00000078  000046fc  000046fc  000146fc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
176 .text.__get_current_locale 00000018  00004774  00004774  00014774  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
177 .text.__locale_ctype_ptr 00000014  0000478c  0000478c  0001478c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
178 .text.__ascii_mbtowc 0000002c  000047a0  000047a0  000147a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
179 .text.memset  0000009c  000047cc  000047cc  000147cc  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
180 .text.strlen  0000005c  00004868  00004868  00014868  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
181 .text.__ascii_wctomb 0000001c  000048c4  000048c4  000148c4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
182 .rodata       00000d69  000048e0  000048e0  000148e0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
183 .data         0000061c  10000000  0000564c  00020000  2**3
                  CONTENTS, ALLOC, LOAD, DATA
184 .bss          000001d9  1000061c  00005c68  0002061c  2**2
                  ALLOC
185 .bss.vicerr_Functions 00000004  100007f8  00005e44  0002061c  2**2
                  ALLOC
186 .bss.iapResults 0000000c  100007fc  00005e48  0002061c  2**2
                  ALLOC
187 .bss.iapCommands 00000014  10000808  00005e54  0002061c  2**2
                  ALLOC
188 .bss.countTicksLed 00000004  1000081c  00005e68  0002061c  2**2
                  ALLOC
189 .bss.countTicks_ms 00000004  10000820  00005e6c  0002061c  2**2
                  ALLOC
190 .bss.callfuncTime 00000004  10000824  00005e70  0002061c  2**2
                  ALLOC
191 .bss.systime_IntFunctions 00000004  10000828  00005e74  0002061c  2**2
                  ALLOC
192 .bss.u0_data_tx 00000096  1000082c  00005e78  0002061c  2**0
                  ALLOC
193 .bss.u0_tx_running 00000001  100008c2  00005f0e  0002061c  2**0
                  ALLOC
194 .bss.u0_overflow_rx 00000002  100008c4  00005f10  0002061c  2**1
                  ALLOC
195 .bss.u0_buf_rx 0000000c  100008c8  00005f14  0002061c  2**2
                  ALLOC
196 .bss.u0_buf_tx 0000000c  100008d4  00005f20  0002061c  2**2
                  ALLOC
197 .bss.u0_data_rx 00000096  100008e0  00005f2c  0002061c  2**0
                  ALLOC
198 .bss.x.5068   00000004  10000978  00005fc4  0002061c  2**2
                  ALLOC
199 .bss.timeReadKey.5018 00000004  1000097c  00005fc8  0002061c  2**2
                  ALLOC
200 .bss.bufKey.5019 0000000c  10000980  00005fcc  0002061c  2**2
                  ALLOC
201 .bss.idx.5020 00000004  1000098c  00005fd8  0002061c  2**2
                  ALLOC
202 .bss.argc_prompt 00000004  10000990  00005fdc  0002061c  2**2
                  ALLOC
203 .bss.result_prompt 00000004  10000994  00005fe0  0002061c  2**2
                  ALLOC
204 .bss.argv_prompt 00000028  10000998  00005fe4  0002061c  2**2
                  ALLOC
205 .bss.buffer_prompt 00000028  100009c0  0000600c  0002061c  2**0
                  ALLOC
206 .bss.dev1_putc 00000004  100009e8  00006034  0002061c  2**2
                  ALLOC
207 .bss.stdio_putc 00000004  100009ec  00006038  0002061c  2**2
                  ALLOC
208 .bss.putcharfunc.4737 00000004  100009f0  0000603c  0002061c  2**2
                  ALLOC
209 .bss.dev3_putc 00000004  100009f4  00006040  0002061c  2**2
                  ALLOC
210 .bss.dev2_putc 00000004  100009f8  00006044  0002061c  2**2
                  ALLOC
211 .bss.stdio_getc 00000004  100009fc  00006048  0002061c  2**2
                  ALLOC
212 .bss.dev4_putc 00000004  10000a00  0000604c  0002061c  2**2
                  ALLOC
213 .bss.debug_putc 00000004  10000a04  00006050  0002061c  2**2
                  ALLOC
214 .bss.err_putc 00000004  10000a08  00006054  0002061c  2**2
                  ALLOC
215 .bss.count1.4249 00000004  10000a0c  00006058  0002061c  2**2
                  ALLOC
216 .bss.error    00000004  10000a10  0000605c  0002061c  2**2
                  ALLOC
217 .bss.ledBlink 00000004  10000a14  00006060  0002061c  2**2
                  ALLOC
218 .bss.ff.4251  00000004  10000a18  00006064  0002061c  2**2
                  ALLOC
219 .bss.count2.4250 00000004  10000a1c  00006068  0002061c  2**2
                  ALLOC
220 .bss.nTimes.4252 00000004  10000a20  0000606c  0002061c  2**2
                  ALLOC
221 .bss.repeat.4250 00000004  10000a24  00006070  0002061c  2**2
                  ALLOC
222 .bss.estado.4249 00000001  10000a28  00006074  0002061c  2**0
                  ALLOC
223 .bss.onKeyUp  00000004  10000a2c  00006078  0002061c  2**2
                  ALLOC
224 .bss.timeRepeat 00000004  10000a30  0000607c  0002061c  2**2
                  ALLOC
225 .bss.keynow.4248 00000001  10000a34  00006080  0002061c  2**0
                  ALLOC
226 .bss.onKeyDown 00000004  10000a38  00006084  0002061c  2**2
                  ALLOC
227 .bss.onKeyPress 00000004  10000a3c  00006088  0002061c  2**2
                  ALLOC
228 .bss.beep     00000030  10000a40  0000608c  0002061c  2**2
                  ALLOC
229 .bss.cmd_list_active 00000004  10000a70  000060bc  0002061c  2**2
                  ALLOC
230 .bss.p        00000004  10000a74  000060c0  0002061c  2**2
                  ALLOC
231 .bss.c        00000001  10000a78  000060c4  0002061c  2**0
                  ALLOC
232 .bss.devicePrintf 00000004  10000a7c  000060c8  0002061c  2**2
                  ALLOC
233 .bss.servoCtrl 0000008c  10000a80  000060cc  0002061c  2**2
                  ALLOC
234 .bss.timeRead.4270 00000004  10000b0c  00006158  0002061c  2**2
                  ALLOC
235 .bss.joy      00000004  10000b10  0000615c  0002061c  2**2
                  ALLOC
236 .comment      0000006e  00000000  00000000  0002061c  2**0
                  CONTENTS, READONLY
237 .ARM.attributes 00000031  00000000  00000000  0002068a  2**0
                  CONTENTS, READONLY
238 .debug_aranges 00000a50  00000000  00000000  000206bb  2**0
                  CONTENTS, READONLY, DEBUGGING
239 .debug_info   00008fbf  00000000  00000000  0002110b  2**0
                  CONTENTS, READONLY, DEBUGGING
240 .debug_abbrev 00002c9f  00000000  00000000  0002a0ca  2**0
                  CONTENTS, READONLY, DEBUGGING
241 .debug_line   000030d0  00000000  00000000  0002cd69  2**0
                  CONTENTS, READONLY, DEBUGGING
242 .debug_frame  00001d94  00000000  00000000  0002fe3c  2**2
                  CONTENTS, READONLY, DEBUGGING
243 .debug_str    00001bcf  00000000  00000000  00031bd0  2**0
                  CONTENTS, READONLY, DEBUGGING
244 .debug_loc    00005c1b  00000000  00000000  0003379f  2**0
                  CONTENTS, READONLY, DEBUGGING
245 .debug_ranges 00000a50  00000000  00000000  000393ba  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <gVectors>:
       0:	00 40 00 10 a1 13 00 00 e9 13 00 00 09 14 00 00     .@..............
      10:	59 14 00 00 79 14 00 00 99 14 00 00 00 00 00 00     Y...y...........
	...
      2c:	b9 14 00 00 d9 14 00 00 00 00 00 00 f9 14 00 00     ................
      3c:	05 1d 00 00 19 15 00 00 39 15 00 00 19 21 00 00     ........9....!..
      4c:	59 15 00 00 79 15 00 00 cd 1f 00 00 99 15 00 00     Y...y...........
      5c:	b9 15 00 00 d9 15 00 00 f9 15 00 00 19 16 00 00     ................
      6c:	39 16 00 00 59 16 00 00 79 16 00 00 99 16 00 00     9...Y...y.......
      7c:	b9 16 00 00 d9 16 00 00 f9 16 00 00 19 17 00 00     ................
      8c:	39 17 00 00 59 17 00 00 79 17 00 00 99 17 00 00     9...Y...y.......
      9c:	b9 17 00 00 d9 17 00 00 f9 17 00 00 19 18 00 00     ................
      ac:	39 18 00 00 59 18 00 00 79 18 00 00 99 18 00 00     9...Y...y.......
      bc:	b9 18 00 00 d9 18 00 00 f9 18 00 00 19 19 00 00     ................
      cc:	39 19 00 00 59 19 00 00 79 19 00 00 99 19 00 00     9...Y...y.......
      dc:	b9 19 00 00 d9 19 00 00 00 00 00 00 00 00 00 00     ................
	...

000002fc <__aeabi_drsub>:
     2fc:	f081 4100 	eor.w	r1, r1, #2147483648	; 0x80000000
     300:	e002      	b.n	308 <__adddf3>
     302:	bf00      	nop

00000304 <__aeabi_dsub>:
     304:	f083 4300 	eor.w	r3, r3, #2147483648	; 0x80000000

00000308 <__adddf3>:
     308:	b530      	push	{r4, r5, lr}
     30a:	ea4f 0441 	mov.w	r4, r1, lsl #1
     30e:	ea4f 0543 	mov.w	r5, r3, lsl #1
     312:	ea94 0f05 	teq	r4, r5
     316:	bf08      	it	eq
     318:	ea90 0f02 	teqeq	r0, r2
     31c:	bf1f      	itttt	ne
     31e:	ea54 0c00 	orrsne.w	ip, r4, r0
     322:	ea55 0c02 	orrsne.w	ip, r5, r2
     326:	ea7f 5c64 	mvnsne.w	ip, r4, asr #21
     32a:	ea7f 5c65 	mvnsne.w	ip, r5, asr #21
     32e:	f000 80e2 	beq.w	4f6 <__adddf3+0x1ee>
     332:	ea4f 5454 	mov.w	r4, r4, lsr #21
     336:	ebd4 5555 	rsbs	r5, r4, r5, lsr #21
     33a:	bfb8      	it	lt
     33c:	426d      	neglt	r5, r5
     33e:	dd0c      	ble.n	35a <__adddf3+0x52>
     340:	442c      	add	r4, r5
     342:	ea80 0202 	eor.w	r2, r0, r2
     346:	ea81 0303 	eor.w	r3, r1, r3
     34a:	ea82 0000 	eor.w	r0, r2, r0
     34e:	ea83 0101 	eor.w	r1, r3, r1
     352:	ea80 0202 	eor.w	r2, r0, r2
     356:	ea81 0303 	eor.w	r3, r1, r3
     35a:	2d36      	cmp	r5, #54	; 0x36
     35c:	bf88      	it	hi
     35e:	bd30      	pophi	{r4, r5, pc}
     360:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000
     364:	ea4f 3101 	mov.w	r1, r1, lsl #12
     368:	f44f 1c80 	mov.w	ip, #1048576	; 0x100000
     36c:	ea4c 3111 	orr.w	r1, ip, r1, lsr #12
     370:	d002      	beq.n	378 <__adddf3+0x70>
     372:	4240      	negs	r0, r0
     374:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
     378:	f013 4f00 	tst.w	r3, #2147483648	; 0x80000000
     37c:	ea4f 3303 	mov.w	r3, r3, lsl #12
     380:	ea4c 3313 	orr.w	r3, ip, r3, lsr #12
     384:	d002      	beq.n	38c <__adddf3+0x84>
     386:	4252      	negs	r2, r2
     388:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1
     38c:	ea94 0f05 	teq	r4, r5
     390:	f000 80a7 	beq.w	4e2 <__adddf3+0x1da>
     394:	f1a4 0401 	sub.w	r4, r4, #1
     398:	f1d5 0e20 	rsbs	lr, r5, #32
     39c:	db0d      	blt.n	3ba <__adddf3+0xb2>
     39e:	fa02 fc0e 	lsl.w	ip, r2, lr
     3a2:	fa22 f205 	lsr.w	r2, r2, r5
     3a6:	1880      	adds	r0, r0, r2
     3a8:	f141 0100 	adc.w	r1, r1, #0
     3ac:	fa03 f20e 	lsl.w	r2, r3, lr
     3b0:	1880      	adds	r0, r0, r2
     3b2:	fa43 f305 	asr.w	r3, r3, r5
     3b6:	4159      	adcs	r1, r3
     3b8:	e00e      	b.n	3d8 <__adddf3+0xd0>
     3ba:	f1a5 0520 	sub.w	r5, r5, #32
     3be:	f10e 0e20 	add.w	lr, lr, #32
     3c2:	2a01      	cmp	r2, #1
     3c4:	fa03 fc0e 	lsl.w	ip, r3, lr
     3c8:	bf28      	it	cs
     3ca:	f04c 0c02 	orrcs.w	ip, ip, #2
     3ce:	fa43 f305 	asr.w	r3, r3, r5
     3d2:	18c0      	adds	r0, r0, r3
     3d4:	eb51 71e3 	adcs.w	r1, r1, r3, asr #31
     3d8:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000
     3dc:	d507      	bpl.n	3ee <__adddf3+0xe6>
     3de:	f04f 0e00 	mov.w	lr, #0
     3e2:	f1dc 0c00 	rsbs	ip, ip, #0
     3e6:	eb7e 0000 	sbcs.w	r0, lr, r0
     3ea:	eb6e 0101 	sbc.w	r1, lr, r1
     3ee:	f5b1 1f80 	cmp.w	r1, #1048576	; 0x100000
     3f2:	d31b      	bcc.n	42c <__adddf3+0x124>
     3f4:	f5b1 1f00 	cmp.w	r1, #2097152	; 0x200000
     3f8:	d30c      	bcc.n	414 <__adddf3+0x10c>
     3fa:	0849      	lsrs	r1, r1, #1
     3fc:	ea5f 0030 	movs.w	r0, r0, rrx
     400:	ea4f 0c3c 	mov.w	ip, ip, rrx
     404:	f104 0401 	add.w	r4, r4, #1
     408:	ea4f 5244 	mov.w	r2, r4, lsl #21
     40c:	f512 0f80 	cmn.w	r2, #4194304	; 0x400000
     410:	f080 809a 	bcs.w	548 <__adddf3+0x240>
     414:	f1bc 4f00 	cmp.w	ip, #2147483648	; 0x80000000
     418:	bf08      	it	eq
     41a:	ea5f 0c50 	movseq.w	ip, r0, lsr #1
     41e:	f150 0000 	adcs.w	r0, r0, #0
     422:	eb41 5104 	adc.w	r1, r1, r4, lsl #20
     426:	ea41 0105 	orr.w	r1, r1, r5
     42a:	bd30      	pop	{r4, r5, pc}
     42c:	ea5f 0c4c 	movs.w	ip, ip, lsl #1
     430:	4140      	adcs	r0, r0
     432:	eb41 0101 	adc.w	r1, r1, r1
     436:	f411 1f80 	tst.w	r1, #1048576	; 0x100000
     43a:	f1a4 0401 	sub.w	r4, r4, #1
     43e:	d1e9      	bne.n	414 <__adddf3+0x10c>
     440:	f091 0f00 	teq	r1, #0
     444:	bf04      	itt	eq
     446:	4601      	moveq	r1, r0
     448:	2000      	moveq	r0, #0
     44a:	fab1 f381 	clz	r3, r1
     44e:	bf08      	it	eq
     450:	3320      	addeq	r3, #32
     452:	f1a3 030b 	sub.w	r3, r3, #11
     456:	f1b3 0220 	subs.w	r2, r3, #32
     45a:	da0c      	bge.n	476 <__adddf3+0x16e>
     45c:	320c      	adds	r2, #12
     45e:	dd08      	ble.n	472 <__adddf3+0x16a>
     460:	f102 0c14 	add.w	ip, r2, #20
     464:	f1c2 020c 	rsb	r2, r2, #12
     468:	fa01 f00c 	lsl.w	r0, r1, ip
     46c:	fa21 f102 	lsr.w	r1, r1, r2
     470:	e00c      	b.n	48c <__adddf3+0x184>
     472:	f102 0214 	add.w	r2, r2, #20
     476:	bfd8      	it	le
     478:	f1c2 0c20 	rsble	ip, r2, #32
     47c:	fa01 f102 	lsl.w	r1, r1, r2
     480:	fa20 fc0c 	lsr.w	ip, r0, ip
     484:	bfdc      	itt	le
     486:	ea41 010c 	orrle.w	r1, r1, ip
     48a:	4090      	lslle	r0, r2
     48c:	1ae4      	subs	r4, r4, r3
     48e:	bfa2      	ittt	ge
     490:	eb01 5104 	addge.w	r1, r1, r4, lsl #20
     494:	4329      	orrge	r1, r5
     496:	bd30      	popge	{r4, r5, pc}
     498:	ea6f 0404 	mvn.w	r4, r4
     49c:	3c1f      	subs	r4, #31
     49e:	da1c      	bge.n	4da <__adddf3+0x1d2>
     4a0:	340c      	adds	r4, #12
     4a2:	dc0e      	bgt.n	4c2 <__adddf3+0x1ba>
     4a4:	f104 0414 	add.w	r4, r4, #20
     4a8:	f1c4 0220 	rsb	r2, r4, #32
     4ac:	fa20 f004 	lsr.w	r0, r0, r4
     4b0:	fa01 f302 	lsl.w	r3, r1, r2
     4b4:	ea40 0003 	orr.w	r0, r0, r3
     4b8:	fa21 f304 	lsr.w	r3, r1, r4
     4bc:	ea45 0103 	orr.w	r1, r5, r3
     4c0:	bd30      	pop	{r4, r5, pc}
     4c2:	f1c4 040c 	rsb	r4, r4, #12
     4c6:	f1c4 0220 	rsb	r2, r4, #32
     4ca:	fa20 f002 	lsr.w	r0, r0, r2
     4ce:	fa01 f304 	lsl.w	r3, r1, r4
     4d2:	ea40 0003 	orr.w	r0, r0, r3
     4d6:	4629      	mov	r1, r5
     4d8:	bd30      	pop	{r4, r5, pc}
     4da:	fa21 f004 	lsr.w	r0, r1, r4
     4de:	4629      	mov	r1, r5
     4e0:	bd30      	pop	{r4, r5, pc}
     4e2:	f094 0f00 	teq	r4, #0
     4e6:	f483 1380 	eor.w	r3, r3, #1048576	; 0x100000
     4ea:	bf06      	itte	eq
     4ec:	f481 1180 	eoreq.w	r1, r1, #1048576	; 0x100000
     4f0:	3401      	addeq	r4, #1
     4f2:	3d01      	subne	r5, #1
     4f4:	e74e      	b.n	394 <__adddf3+0x8c>
     4f6:	ea7f 5c64 	mvns.w	ip, r4, asr #21
     4fa:	bf18      	it	ne
     4fc:	ea7f 5c65 	mvnsne.w	ip, r5, asr #21
     500:	d029      	beq.n	556 <__adddf3+0x24e>
     502:	ea94 0f05 	teq	r4, r5
     506:	bf08      	it	eq
     508:	ea90 0f02 	teqeq	r0, r2
     50c:	d005      	beq.n	51a <__adddf3+0x212>
     50e:	ea54 0c00 	orrs.w	ip, r4, r0
     512:	bf04      	itt	eq
     514:	4619      	moveq	r1, r3
     516:	4610      	moveq	r0, r2
     518:	bd30      	pop	{r4, r5, pc}
     51a:	ea91 0f03 	teq	r1, r3
     51e:	bf1e      	ittt	ne
     520:	2100      	movne	r1, #0
     522:	2000      	movne	r0, #0
     524:	bd30      	popne	{r4, r5, pc}
     526:	ea5f 5c54 	movs.w	ip, r4, lsr #21
     52a:	d105      	bne.n	538 <__adddf3+0x230>
     52c:	0040      	lsls	r0, r0, #1
     52e:	4149      	adcs	r1, r1
     530:	bf28      	it	cs
     532:	f041 4100 	orrcs.w	r1, r1, #2147483648	; 0x80000000
     536:	bd30      	pop	{r4, r5, pc}
     538:	f514 0480 	adds.w	r4, r4, #4194304	; 0x400000
     53c:	bf3c      	itt	cc
     53e:	f501 1180 	addcc.w	r1, r1, #1048576	; 0x100000
     542:	bd30      	popcc	{r4, r5, pc}
     544:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000
     548:	f045 41fe 	orr.w	r1, r5, #2130706432	; 0x7f000000
     54c:	f441 0170 	orr.w	r1, r1, #15728640	; 0xf00000
     550:	f04f 0000 	mov.w	r0, #0
     554:	bd30      	pop	{r4, r5, pc}
     556:	ea7f 5c64 	mvns.w	ip, r4, asr #21
     55a:	bf1a      	itte	ne
     55c:	4619      	movne	r1, r3
     55e:	4610      	movne	r0, r2
     560:	ea7f 5c65 	mvnseq.w	ip, r5, asr #21
     564:	bf1c      	itt	ne
     566:	460b      	movne	r3, r1
     568:	4602      	movne	r2, r0
     56a:	ea50 3401 	orrs.w	r4, r0, r1, lsl #12
     56e:	bf06      	itte	eq
     570:	ea52 3503 	orrseq.w	r5, r2, r3, lsl #12
     574:	ea91 0f03 	teqeq	r1, r3
     578:	f441 2100 	orrne.w	r1, r1, #524288	; 0x80000
     57c:	bd30      	pop	{r4, r5, pc}
     57e:	bf00      	nop

00000580 <__aeabi_ui2d>:
     580:	f090 0f00 	teq	r0, #0
     584:	bf04      	itt	eq
     586:	2100      	moveq	r1, #0
     588:	4770      	bxeq	lr
     58a:	b530      	push	{r4, r5, lr}
     58c:	f44f 6480 	mov.w	r4, #1024	; 0x400
     590:	f104 0432 	add.w	r4, r4, #50	; 0x32
     594:	f04f 0500 	mov.w	r5, #0
     598:	f04f 0100 	mov.w	r1, #0
     59c:	e750      	b.n	440 <__adddf3+0x138>
     59e:	bf00      	nop

000005a0 <__aeabi_i2d>:
     5a0:	f090 0f00 	teq	r0, #0
     5a4:	bf04      	itt	eq
     5a6:	2100      	moveq	r1, #0
     5a8:	4770      	bxeq	lr
     5aa:	b530      	push	{r4, r5, lr}
     5ac:	f44f 6480 	mov.w	r4, #1024	; 0x400
     5b0:	f104 0432 	add.w	r4, r4, #50	; 0x32
     5b4:	f010 4500 	ands.w	r5, r0, #2147483648	; 0x80000000
     5b8:	bf48      	it	mi
     5ba:	4240      	negmi	r0, r0
     5bc:	f04f 0100 	mov.w	r1, #0
     5c0:	e73e      	b.n	440 <__adddf3+0x138>
     5c2:	bf00      	nop

000005c4 <__aeabi_f2d>:
     5c4:	0042      	lsls	r2, r0, #1
     5c6:	ea4f 01e2 	mov.w	r1, r2, asr #3
     5ca:	ea4f 0131 	mov.w	r1, r1, rrx
     5ce:	ea4f 7002 	mov.w	r0, r2, lsl #28
     5d2:	bf1f      	itttt	ne
     5d4:	f012 437f 	andsne.w	r3, r2, #4278190080	; 0xff000000
     5d8:	f093 4f7f 	teqne	r3, #4278190080	; 0xff000000
     5dc:	f081 5160 	eorne.w	r1, r1, #939524096	; 0x38000000
     5e0:	4770      	bxne	lr
     5e2:	f092 0f00 	teq	r2, #0
     5e6:	bf14      	ite	ne
     5e8:	f093 4f7f 	teqne	r3, #4278190080	; 0xff000000
     5ec:	4770      	bxeq	lr
     5ee:	b530      	push	{r4, r5, lr}
     5f0:	f44f 7460 	mov.w	r4, #896	; 0x380
     5f4:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000
     5f8:	f021 4100 	bic.w	r1, r1, #2147483648	; 0x80000000
     5fc:	e720      	b.n	440 <__adddf3+0x138>
     5fe:	bf00      	nop

00000600 <__aeabi_ul2d>:
     600:	ea50 0201 	orrs.w	r2, r0, r1
     604:	bf08      	it	eq
     606:	4770      	bxeq	lr
     608:	b530      	push	{r4, r5, lr}
     60a:	f04f 0500 	mov.w	r5, #0
     60e:	e00a      	b.n	626 <__aeabi_l2d+0x16>

00000610 <__aeabi_l2d>:
     610:	ea50 0201 	orrs.w	r2, r0, r1
     614:	bf08      	it	eq
     616:	4770      	bxeq	lr
     618:	b530      	push	{r4, r5, lr}
     61a:	f011 4500 	ands.w	r5, r1, #2147483648	; 0x80000000
     61e:	d502      	bpl.n	626 <__aeabi_l2d+0x16>
     620:	4240      	negs	r0, r0
     622:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
     626:	f44f 6480 	mov.w	r4, #1024	; 0x400
     62a:	f104 0432 	add.w	r4, r4, #50	; 0x32
     62e:	ea5f 5c91 	movs.w	ip, r1, lsr #22
     632:	f43f aedc 	beq.w	3ee <__adddf3+0xe6>
     636:	f04f 0203 	mov.w	r2, #3
     63a:	ea5f 0cdc 	movs.w	ip, ip, lsr #3
     63e:	bf18      	it	ne
     640:	3203      	addne	r2, #3
     642:	ea5f 0cdc 	movs.w	ip, ip, lsr #3
     646:	bf18      	it	ne
     648:	3203      	addne	r2, #3
     64a:	eb02 02dc 	add.w	r2, r2, ip, lsr #3
     64e:	f1c2 0320 	rsb	r3, r2, #32
     652:	fa00 fc03 	lsl.w	ip, r0, r3
     656:	fa20 f002 	lsr.w	r0, r0, r2
     65a:	fa01 fe03 	lsl.w	lr, r1, r3
     65e:	ea40 000e 	orr.w	r0, r0, lr
     662:	fa21 f102 	lsr.w	r1, r1, r2
     666:	4414      	add	r4, r2
     668:	e6c1      	b.n	3ee <__adddf3+0xe6>
     66a:	bf00      	nop

0000066c <__aeabi_dmul>:
     66c:	b570      	push	{r4, r5, r6, lr}
     66e:	f04f 0cff 	mov.w	ip, #255	; 0xff
     672:	f44c 6ce0 	orr.w	ip, ip, #1792	; 0x700
     676:	ea1c 5411 	ands.w	r4, ip, r1, lsr #20
     67a:	bf1d      	ittte	ne
     67c:	ea1c 5513 	andsne.w	r5, ip, r3, lsr #20
     680:	ea94 0f0c 	teqne	r4, ip
     684:	ea95 0f0c 	teqne	r5, ip
     688:	f000 f8de 	bleq	848 <__aeabi_dmul+0x1dc>
     68c:	442c      	add	r4, r5
     68e:	ea81 0603 	eor.w	r6, r1, r3
     692:	ea21 514c 	bic.w	r1, r1, ip, lsl #21
     696:	ea23 534c 	bic.w	r3, r3, ip, lsl #21
     69a:	ea50 3501 	orrs.w	r5, r0, r1, lsl #12
     69e:	bf18      	it	ne
     6a0:	ea52 3503 	orrsne.w	r5, r2, r3, lsl #12
     6a4:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000
     6a8:	f443 1380 	orr.w	r3, r3, #1048576	; 0x100000
     6ac:	d038      	beq.n	720 <__aeabi_dmul+0xb4>
     6ae:	fba0 ce02 	umull	ip, lr, r0, r2
     6b2:	f04f 0500 	mov.w	r5, #0
     6b6:	fbe1 e502 	umlal	lr, r5, r1, r2
     6ba:	f006 4200 	and.w	r2, r6, #2147483648	; 0x80000000
     6be:	fbe0 e503 	umlal	lr, r5, r0, r3
     6c2:	f04f 0600 	mov.w	r6, #0
     6c6:	fbe1 5603 	umlal	r5, r6, r1, r3
     6ca:	f09c 0f00 	teq	ip, #0
     6ce:	bf18      	it	ne
     6d0:	f04e 0e01 	orrne.w	lr, lr, #1
     6d4:	f1a4 04ff 	sub.w	r4, r4, #255	; 0xff
     6d8:	f5b6 7f00 	cmp.w	r6, #512	; 0x200
     6dc:	f564 7440 	sbc.w	r4, r4, #768	; 0x300
     6e0:	d204      	bcs.n	6ec <__aeabi_dmul+0x80>
     6e2:	ea5f 0e4e 	movs.w	lr, lr, lsl #1
     6e6:	416d      	adcs	r5, r5
     6e8:	eb46 0606 	adc.w	r6, r6, r6
     6ec:	ea42 21c6 	orr.w	r1, r2, r6, lsl #11
     6f0:	ea41 5155 	orr.w	r1, r1, r5, lsr #21
     6f4:	ea4f 20c5 	mov.w	r0, r5, lsl #11
     6f8:	ea40 505e 	orr.w	r0, r0, lr, lsr #21
     6fc:	ea4f 2ece 	mov.w	lr, lr, lsl #11
     700:	f1b4 0cfd 	subs.w	ip, r4, #253	; 0xfd
     704:	bf88      	it	hi
     706:	f5bc 6fe0 	cmphi.w	ip, #1792	; 0x700
     70a:	d81e      	bhi.n	74a <__aeabi_dmul+0xde>
     70c:	f1be 4f00 	cmp.w	lr, #2147483648	; 0x80000000
     710:	bf08      	it	eq
     712:	ea5f 0e50 	movseq.w	lr, r0, lsr #1
     716:	f150 0000 	adcs.w	r0, r0, #0
     71a:	eb41 5104 	adc.w	r1, r1, r4, lsl #20
     71e:	bd70      	pop	{r4, r5, r6, pc}
     720:	f006 4600 	and.w	r6, r6, #2147483648	; 0x80000000
     724:	ea46 0101 	orr.w	r1, r6, r1
     728:	ea40 0002 	orr.w	r0, r0, r2
     72c:	ea81 0103 	eor.w	r1, r1, r3
     730:	ebb4 045c 	subs.w	r4, r4, ip, lsr #1
     734:	bfc2      	ittt	gt
     736:	ebd4 050c 	rsbsgt	r5, r4, ip
     73a:	ea41 5104 	orrgt.w	r1, r1, r4, lsl #20
     73e:	bd70      	popgt	{r4, r5, r6, pc}
     740:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000
     744:	f04f 0e00 	mov.w	lr, #0
     748:	3c01      	subs	r4, #1
     74a:	f300 80ab 	bgt.w	8a4 <__aeabi_dmul+0x238>
     74e:	f114 0f36 	cmn.w	r4, #54	; 0x36
     752:	bfde      	ittt	le
     754:	2000      	movle	r0, #0
     756:	f001 4100 	andle.w	r1, r1, #2147483648	; 0x80000000
     75a:	bd70      	pople	{r4, r5, r6, pc}
     75c:	f1c4 0400 	rsb	r4, r4, #0
     760:	3c20      	subs	r4, #32
     762:	da35      	bge.n	7d0 <__aeabi_dmul+0x164>
     764:	340c      	adds	r4, #12
     766:	dc1b      	bgt.n	7a0 <__aeabi_dmul+0x134>
     768:	f104 0414 	add.w	r4, r4, #20
     76c:	f1c4 0520 	rsb	r5, r4, #32
     770:	fa00 f305 	lsl.w	r3, r0, r5
     774:	fa20 f004 	lsr.w	r0, r0, r4
     778:	fa01 f205 	lsl.w	r2, r1, r5
     77c:	ea40 0002 	orr.w	r0, r0, r2
     780:	f001 4200 	and.w	r2, r1, #2147483648	; 0x80000000
     784:	f021 4100 	bic.w	r1, r1, #2147483648	; 0x80000000
     788:	eb10 70d3 	adds.w	r0, r0, r3, lsr #31
     78c:	fa21 f604 	lsr.w	r6, r1, r4
     790:	eb42 0106 	adc.w	r1, r2, r6
     794:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1
     798:	bf08      	it	eq
     79a:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31
     79e:	bd70      	pop	{r4, r5, r6, pc}
     7a0:	f1c4 040c 	rsb	r4, r4, #12
     7a4:	f1c4 0520 	rsb	r5, r4, #32
     7a8:	fa00 f304 	lsl.w	r3, r0, r4
     7ac:	fa20 f005 	lsr.w	r0, r0, r5
     7b0:	fa01 f204 	lsl.w	r2, r1, r4
     7b4:	ea40 0002 	orr.w	r0, r0, r2
     7b8:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000
     7bc:	eb10 70d3 	adds.w	r0, r0, r3, lsr #31
     7c0:	f141 0100 	adc.w	r1, r1, #0
     7c4:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1
     7c8:	bf08      	it	eq
     7ca:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31
     7ce:	bd70      	pop	{r4, r5, r6, pc}
     7d0:	f1c4 0520 	rsb	r5, r4, #32
     7d4:	fa00 f205 	lsl.w	r2, r0, r5
     7d8:	ea4e 0e02 	orr.w	lr, lr, r2
     7dc:	fa20 f304 	lsr.w	r3, r0, r4
     7e0:	fa01 f205 	lsl.w	r2, r1, r5
     7e4:	ea43 0302 	orr.w	r3, r3, r2
     7e8:	fa21 f004 	lsr.w	r0, r1, r4
     7ec:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000
     7f0:	fa21 f204 	lsr.w	r2, r1, r4
     7f4:	ea20 0002 	bic.w	r0, r0, r2
     7f8:	eb00 70d3 	add.w	r0, r0, r3, lsr #31
     7fc:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1
     800:	bf08      	it	eq
     802:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31
     806:	bd70      	pop	{r4, r5, r6, pc}
     808:	f094 0f00 	teq	r4, #0
     80c:	d10f      	bne.n	82e <__aeabi_dmul+0x1c2>
     80e:	f001 4600 	and.w	r6, r1, #2147483648	; 0x80000000
     812:	0040      	lsls	r0, r0, #1
     814:	eb41 0101 	adc.w	r1, r1, r1
     818:	f411 1f80 	tst.w	r1, #1048576	; 0x100000
     81c:	bf08      	it	eq
     81e:	3c01      	subeq	r4, #1
     820:	d0f7      	beq.n	812 <__aeabi_dmul+0x1a6>
     822:	ea41 0106 	orr.w	r1, r1, r6
     826:	f095 0f00 	teq	r5, #0
     82a:	bf18      	it	ne
     82c:	4770      	bxne	lr
     82e:	f003 4600 	and.w	r6, r3, #2147483648	; 0x80000000
     832:	0052      	lsls	r2, r2, #1
     834:	eb43 0303 	adc.w	r3, r3, r3
     838:	f413 1f80 	tst.w	r3, #1048576	; 0x100000
     83c:	bf08      	it	eq
     83e:	3d01      	subeq	r5, #1
     840:	d0f7      	beq.n	832 <__aeabi_dmul+0x1c6>
     842:	ea43 0306 	orr.w	r3, r3, r6
     846:	4770      	bx	lr
     848:	ea94 0f0c 	teq	r4, ip
     84c:	ea0c 5513 	and.w	r5, ip, r3, lsr #20
     850:	bf18      	it	ne
     852:	ea95 0f0c 	teqne	r5, ip
     856:	d00c      	beq.n	872 <__aeabi_dmul+0x206>
     858:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1
     85c:	bf18      	it	ne
     85e:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1
     862:	d1d1      	bne.n	808 <__aeabi_dmul+0x19c>
     864:	ea81 0103 	eor.w	r1, r1, r3
     868:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000
     86c:	f04f 0000 	mov.w	r0, #0
     870:	bd70      	pop	{r4, r5, r6, pc}
     872:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1
     876:	bf06      	itte	eq
     878:	4610      	moveq	r0, r2
     87a:	4619      	moveq	r1, r3
     87c:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1
     880:	d019      	beq.n	8b6 <__aeabi_dmul+0x24a>
     882:	ea94 0f0c 	teq	r4, ip
     886:	d102      	bne.n	88e <__aeabi_dmul+0x222>
     888:	ea50 3601 	orrs.w	r6, r0, r1, lsl #12
     88c:	d113      	bne.n	8b6 <__aeabi_dmul+0x24a>
     88e:	ea95 0f0c 	teq	r5, ip
     892:	d105      	bne.n	8a0 <__aeabi_dmul+0x234>
     894:	ea52 3603 	orrs.w	r6, r2, r3, lsl #12
     898:	bf1c      	itt	ne
     89a:	4610      	movne	r0, r2
     89c:	4619      	movne	r1, r3
     89e:	d10a      	bne.n	8b6 <__aeabi_dmul+0x24a>
     8a0:	ea81 0103 	eor.w	r1, r1, r3
     8a4:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000
     8a8:	f041 41fe 	orr.w	r1, r1, #2130706432	; 0x7f000000
     8ac:	f441 0170 	orr.w	r1, r1, #15728640	; 0xf00000
     8b0:	f04f 0000 	mov.w	r0, #0
     8b4:	bd70      	pop	{r4, r5, r6, pc}
     8b6:	f041 41fe 	orr.w	r1, r1, #2130706432	; 0x7f000000
     8ba:	f441 0178 	orr.w	r1, r1, #16252928	; 0xf80000
     8be:	bd70      	pop	{r4, r5, r6, pc}

000008c0 <__aeabi_ddiv>:
     8c0:	b570      	push	{r4, r5, r6, lr}
     8c2:	f04f 0cff 	mov.w	ip, #255	; 0xff
     8c6:	f44c 6ce0 	orr.w	ip, ip, #1792	; 0x700
     8ca:	ea1c 5411 	ands.w	r4, ip, r1, lsr #20
     8ce:	bf1d      	ittte	ne
     8d0:	ea1c 5513 	andsne.w	r5, ip, r3, lsr #20
     8d4:	ea94 0f0c 	teqne	r4, ip
     8d8:	ea95 0f0c 	teqne	r5, ip
     8dc:	f000 f8a7 	bleq	a2e <__aeabi_ddiv+0x16e>
     8e0:	eba4 0405 	sub.w	r4, r4, r5
     8e4:	ea81 0e03 	eor.w	lr, r1, r3
     8e8:	ea52 3503 	orrs.w	r5, r2, r3, lsl #12
     8ec:	ea4f 3101 	mov.w	r1, r1, lsl #12
     8f0:	f000 8088 	beq.w	a04 <__aeabi_ddiv+0x144>
     8f4:	ea4f 3303 	mov.w	r3, r3, lsl #12
     8f8:	f04f 5580 	mov.w	r5, #268435456	; 0x10000000
     8fc:	ea45 1313 	orr.w	r3, r5, r3, lsr #4
     900:	ea43 6312 	orr.w	r3, r3, r2, lsr #24
     904:	ea4f 2202 	mov.w	r2, r2, lsl #8
     908:	ea45 1511 	orr.w	r5, r5, r1, lsr #4
     90c:	ea45 6510 	orr.w	r5, r5, r0, lsr #24
     910:	ea4f 2600 	mov.w	r6, r0, lsl #8
     914:	f00e 4100 	and.w	r1, lr, #2147483648	; 0x80000000
     918:	429d      	cmp	r5, r3
     91a:	bf08      	it	eq
     91c:	4296      	cmpeq	r6, r2
     91e:	f144 04fd 	adc.w	r4, r4, #253	; 0xfd
     922:	f504 7440 	add.w	r4, r4, #768	; 0x300
     926:	d202      	bcs.n	92e <__aeabi_ddiv+0x6e>
     928:	085b      	lsrs	r3, r3, #1
     92a:	ea4f 0232 	mov.w	r2, r2, rrx
     92e:	1ab6      	subs	r6, r6, r2
     930:	eb65 0503 	sbc.w	r5, r5, r3
     934:	085b      	lsrs	r3, r3, #1
     936:	ea4f 0232 	mov.w	r2, r2, rrx
     93a:	f44f 1080 	mov.w	r0, #1048576	; 0x100000
     93e:	f44f 2c00 	mov.w	ip, #524288	; 0x80000
     942:	ebb6 0e02 	subs.w	lr, r6, r2
     946:	eb75 0e03 	sbcs.w	lr, r5, r3
     94a:	bf22      	ittt	cs
     94c:	1ab6      	subcs	r6, r6, r2
     94e:	4675      	movcs	r5, lr
     950:	ea40 000c 	orrcs.w	r0, r0, ip
     954:	085b      	lsrs	r3, r3, #1
     956:	ea4f 0232 	mov.w	r2, r2, rrx
     95a:	ebb6 0e02 	subs.w	lr, r6, r2
     95e:	eb75 0e03 	sbcs.w	lr, r5, r3
     962:	bf22      	ittt	cs
     964:	1ab6      	subcs	r6, r6, r2
     966:	4675      	movcs	r5, lr
     968:	ea40 005c 	orrcs.w	r0, r0, ip, lsr #1
     96c:	085b      	lsrs	r3, r3, #1
     96e:	ea4f 0232 	mov.w	r2, r2, rrx
     972:	ebb6 0e02 	subs.w	lr, r6, r2
     976:	eb75 0e03 	sbcs.w	lr, r5, r3
     97a:	bf22      	ittt	cs
     97c:	1ab6      	subcs	r6, r6, r2
     97e:	4675      	movcs	r5, lr
     980:	ea40 009c 	orrcs.w	r0, r0, ip, lsr #2
     984:	085b      	lsrs	r3, r3, #1
     986:	ea4f 0232 	mov.w	r2, r2, rrx
     98a:	ebb6 0e02 	subs.w	lr, r6, r2
     98e:	eb75 0e03 	sbcs.w	lr, r5, r3
     992:	bf22      	ittt	cs
     994:	1ab6      	subcs	r6, r6, r2
     996:	4675      	movcs	r5, lr
     998:	ea40 00dc 	orrcs.w	r0, r0, ip, lsr #3
     99c:	ea55 0e06 	orrs.w	lr, r5, r6
     9a0:	d018      	beq.n	9d4 <__aeabi_ddiv+0x114>
     9a2:	ea4f 1505 	mov.w	r5, r5, lsl #4
     9a6:	ea45 7516 	orr.w	r5, r5, r6, lsr #28
     9aa:	ea4f 1606 	mov.w	r6, r6, lsl #4
     9ae:	ea4f 03c3 	mov.w	r3, r3, lsl #3
     9b2:	ea43 7352 	orr.w	r3, r3, r2, lsr #29
     9b6:	ea4f 02c2 	mov.w	r2, r2, lsl #3
     9ba:	ea5f 1c1c 	movs.w	ip, ip, lsr #4
     9be:	d1c0      	bne.n	942 <__aeabi_ddiv+0x82>
     9c0:	f411 1f80 	tst.w	r1, #1048576	; 0x100000
     9c4:	d10b      	bne.n	9de <__aeabi_ddiv+0x11e>
     9c6:	ea41 0100 	orr.w	r1, r1, r0
     9ca:	f04f 0000 	mov.w	r0, #0
     9ce:	f04f 4c00 	mov.w	ip, #2147483648	; 0x80000000
     9d2:	e7b6      	b.n	942 <__aeabi_ddiv+0x82>
     9d4:	f411 1f80 	tst.w	r1, #1048576	; 0x100000
     9d8:	bf04      	itt	eq
     9da:	4301      	orreq	r1, r0
     9dc:	2000      	moveq	r0, #0
     9de:	f1b4 0cfd 	subs.w	ip, r4, #253	; 0xfd
     9e2:	bf88      	it	hi
     9e4:	f5bc 6fe0 	cmphi.w	ip, #1792	; 0x700
     9e8:	f63f aeaf 	bhi.w	74a <__aeabi_dmul+0xde>
     9ec:	ebb5 0c03 	subs.w	ip, r5, r3
     9f0:	bf04      	itt	eq
     9f2:	ebb6 0c02 	subseq.w	ip, r6, r2
     9f6:	ea5f 0c50 	movseq.w	ip, r0, lsr #1
     9fa:	f150 0000 	adcs.w	r0, r0, #0
     9fe:	eb41 5104 	adc.w	r1, r1, r4, lsl #20
     a02:	bd70      	pop	{r4, r5, r6, pc}
     a04:	f00e 4e00 	and.w	lr, lr, #2147483648	; 0x80000000
     a08:	ea4e 3111 	orr.w	r1, lr, r1, lsr #12
     a0c:	eb14 045c 	adds.w	r4, r4, ip, lsr #1
     a10:	bfc2      	ittt	gt
     a12:	ebd4 050c 	rsbsgt	r5, r4, ip
     a16:	ea41 5104 	orrgt.w	r1, r1, r4, lsl #20
     a1a:	bd70      	popgt	{r4, r5, r6, pc}
     a1c:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000
     a20:	f04f 0e00 	mov.w	lr, #0
     a24:	3c01      	subs	r4, #1
     a26:	e690      	b.n	74a <__aeabi_dmul+0xde>
     a28:	ea45 0e06 	orr.w	lr, r5, r6
     a2c:	e68d      	b.n	74a <__aeabi_dmul+0xde>
     a2e:	ea0c 5513 	and.w	r5, ip, r3, lsr #20
     a32:	ea94 0f0c 	teq	r4, ip
     a36:	bf08      	it	eq
     a38:	ea95 0f0c 	teqeq	r5, ip
     a3c:	f43f af3b 	beq.w	8b6 <__aeabi_dmul+0x24a>
     a40:	ea94 0f0c 	teq	r4, ip
     a44:	d10a      	bne.n	a5c <__aeabi_ddiv+0x19c>
     a46:	ea50 3401 	orrs.w	r4, r0, r1, lsl #12
     a4a:	f47f af34 	bne.w	8b6 <__aeabi_dmul+0x24a>
     a4e:	ea95 0f0c 	teq	r5, ip
     a52:	f47f af25 	bne.w	8a0 <__aeabi_dmul+0x234>
     a56:	4610      	mov	r0, r2
     a58:	4619      	mov	r1, r3
     a5a:	e72c      	b.n	8b6 <__aeabi_dmul+0x24a>
     a5c:	ea95 0f0c 	teq	r5, ip
     a60:	d106      	bne.n	a70 <__aeabi_ddiv+0x1b0>
     a62:	ea52 3503 	orrs.w	r5, r2, r3, lsl #12
     a66:	f43f aefd 	beq.w	864 <__aeabi_dmul+0x1f8>
     a6a:	4610      	mov	r0, r2
     a6c:	4619      	mov	r1, r3
     a6e:	e722      	b.n	8b6 <__aeabi_dmul+0x24a>
     a70:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1
     a74:	bf18      	it	ne
     a76:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1
     a7a:	f47f aec5 	bne.w	808 <__aeabi_dmul+0x19c>
     a7e:	ea50 0441 	orrs.w	r4, r0, r1, lsl #1
     a82:	f47f af0d 	bne.w	8a0 <__aeabi_dmul+0x234>
     a86:	ea52 0543 	orrs.w	r5, r2, r3, lsl #1
     a8a:	f47f aeeb 	bne.w	864 <__aeabi_dmul+0x1f8>
     a8e:	e712      	b.n	8b6 <__aeabi_dmul+0x24a>

00000a90 <__gedf2>:
     a90:	f04f 3cff 	mov.w	ip, #4294967295
     a94:	e006      	b.n	aa4 <__cmpdf2+0x4>
     a96:	bf00      	nop

00000a98 <__ledf2>:
     a98:	f04f 0c01 	mov.w	ip, #1
     a9c:	e002      	b.n	aa4 <__cmpdf2+0x4>
     a9e:	bf00      	nop

00000aa0 <__cmpdf2>:
     aa0:	f04f 0c01 	mov.w	ip, #1
     aa4:	f84d cd04 	str.w	ip, [sp, #-4]!
     aa8:	ea4f 0c41 	mov.w	ip, r1, lsl #1
     aac:	ea7f 5c6c 	mvns.w	ip, ip, asr #21
     ab0:	ea4f 0c43 	mov.w	ip, r3, lsl #1
     ab4:	bf18      	it	ne
     ab6:	ea7f 5c6c 	mvnsne.w	ip, ip, asr #21
     aba:	d01b      	beq.n	af4 <__cmpdf2+0x54>
     abc:	b001      	add	sp, #4
     abe:	ea50 0c41 	orrs.w	ip, r0, r1, lsl #1
     ac2:	bf0c      	ite	eq
     ac4:	ea52 0c43 	orrseq.w	ip, r2, r3, lsl #1
     ac8:	ea91 0f03 	teqne	r1, r3
     acc:	bf02      	ittt	eq
     ace:	ea90 0f02 	teqeq	r0, r2
     ad2:	2000      	moveq	r0, #0
     ad4:	4770      	bxeq	lr
     ad6:	f110 0f00 	cmn.w	r0, #0
     ada:	ea91 0f03 	teq	r1, r3
     ade:	bf58      	it	pl
     ae0:	4299      	cmppl	r1, r3
     ae2:	bf08      	it	eq
     ae4:	4290      	cmpeq	r0, r2
     ae6:	bf2c      	ite	cs
     ae8:	17d8      	asrcs	r0, r3, #31
     aea:	ea6f 70e3 	mvncc.w	r0, r3, asr #31
     aee:	f040 0001 	orr.w	r0, r0, #1
     af2:	4770      	bx	lr
     af4:	ea4f 0c41 	mov.w	ip, r1, lsl #1
     af8:	ea7f 5c6c 	mvns.w	ip, ip, asr #21
     afc:	d102      	bne.n	b04 <__cmpdf2+0x64>
     afe:	ea50 3c01 	orrs.w	ip, r0, r1, lsl #12
     b02:	d107      	bne.n	b14 <__cmpdf2+0x74>
     b04:	ea4f 0c43 	mov.w	ip, r3, lsl #1
     b08:	ea7f 5c6c 	mvns.w	ip, ip, asr #21
     b0c:	d1d6      	bne.n	abc <__cmpdf2+0x1c>
     b0e:	ea52 3c03 	orrs.w	ip, r2, r3, lsl #12
     b12:	d0d3      	beq.n	abc <__cmpdf2+0x1c>
     b14:	f85d 0b04 	ldr.w	r0, [sp], #4
     b18:	4770      	bx	lr
     b1a:	bf00      	nop

00000b1c <__aeabi_cdrcmple>:
     b1c:	4684      	mov	ip, r0
     b1e:	4610      	mov	r0, r2
     b20:	4662      	mov	r2, ip
     b22:	468c      	mov	ip, r1
     b24:	4619      	mov	r1, r3
     b26:	4663      	mov	r3, ip
     b28:	e000      	b.n	b2c <__aeabi_cdcmpeq>
     b2a:	bf00      	nop

00000b2c <__aeabi_cdcmpeq>:
     b2c:	b501      	push	{r0, lr}
     b2e:	f7ff ffb7 	bl	aa0 <__cmpdf2>
     b32:	2800      	cmp	r0, #0
     b34:	bf48      	it	mi
     b36:	f110 0f00 	cmnmi.w	r0, #0
     b3a:	bd01      	pop	{r0, pc}

00000b3c <__aeabi_dcmpeq>:
     b3c:	f84d ed08 	str.w	lr, [sp, #-8]!
     b40:	f7ff fff4 	bl	b2c <__aeabi_cdcmpeq>
     b44:	bf0c      	ite	eq
     b46:	2001      	moveq	r0, #1
     b48:	2000      	movne	r0, #0
     b4a:	f85d fb08 	ldr.w	pc, [sp], #8
     b4e:	bf00      	nop

00000b50 <__aeabi_dcmplt>:
     b50:	f84d ed08 	str.w	lr, [sp, #-8]!
     b54:	f7ff ffea 	bl	b2c <__aeabi_cdcmpeq>
     b58:	bf34      	ite	cc
     b5a:	2001      	movcc	r0, #1
     b5c:	2000      	movcs	r0, #0
     b5e:	f85d fb08 	ldr.w	pc, [sp], #8
     b62:	bf00      	nop

00000b64 <__aeabi_dcmple>:
     b64:	f84d ed08 	str.w	lr, [sp, #-8]!
     b68:	f7ff ffe0 	bl	b2c <__aeabi_cdcmpeq>
     b6c:	bf94      	ite	ls
     b6e:	2001      	movls	r0, #1
     b70:	2000      	movhi	r0, #0
     b72:	f85d fb08 	ldr.w	pc, [sp], #8
     b76:	bf00      	nop

00000b78 <__aeabi_dcmpge>:
     b78:	f84d ed08 	str.w	lr, [sp, #-8]!
     b7c:	f7ff ffce 	bl	b1c <__aeabi_cdrcmple>
     b80:	bf94      	ite	ls
     b82:	2001      	movls	r0, #1
     b84:	2000      	movhi	r0, #0
     b86:	f85d fb08 	ldr.w	pc, [sp], #8
     b8a:	bf00      	nop

00000b8c <__aeabi_dcmpgt>:
     b8c:	f84d ed08 	str.w	lr, [sp, #-8]!
     b90:	f7ff ffc4 	bl	b1c <__aeabi_cdrcmple>
     b94:	bf34      	ite	cc
     b96:	2001      	movcc	r0, #1
     b98:	2000      	movcs	r0, #0
     b9a:	f85d fb08 	ldr.w	pc, [sp], #8
     b9e:	bf00      	nop

00000ba0 <__aeabi_d2iz>:
     ba0:	ea4f 0241 	mov.w	r2, r1, lsl #1
     ba4:	f512 1200 	adds.w	r2, r2, #2097152	; 0x200000
     ba8:	d215      	bcs.n	bd6 <__aeabi_d2iz+0x36>
     baa:	d511      	bpl.n	bd0 <__aeabi_d2iz+0x30>
     bac:	f46f 7378 	mvn.w	r3, #992	; 0x3e0
     bb0:	ebb3 5262 	subs.w	r2, r3, r2, asr #21
     bb4:	d912      	bls.n	bdc <__aeabi_d2iz+0x3c>
     bb6:	ea4f 23c1 	mov.w	r3, r1, lsl #11
     bba:	f043 4300 	orr.w	r3, r3, #2147483648	; 0x80000000
     bbe:	ea43 5350 	orr.w	r3, r3, r0, lsr #21
     bc2:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000
     bc6:	fa23 f002 	lsr.w	r0, r3, r2
     bca:	bf18      	it	ne
     bcc:	4240      	negne	r0, r0
     bce:	4770      	bx	lr
     bd0:	f04f 0000 	mov.w	r0, #0
     bd4:	4770      	bx	lr
     bd6:	ea50 3001 	orrs.w	r0, r0, r1, lsl #12
     bda:	d105      	bne.n	be8 <__aeabi_d2iz+0x48>
     bdc:	f011 4000 	ands.w	r0, r1, #2147483648	; 0x80000000
     be0:	bf08      	it	eq
     be2:	f06f 4000 	mvneq.w	r0, #2147483648	; 0x80000000
     be6:	4770      	bx	lr
     be8:	f04f 0000 	mov.w	r0, #0
     bec:	4770      	bx	lr
     bee:	bf00      	nop

00000bf0 <__aeabi_frsub>:
     bf0:	f080 4000 	eor.w	r0, r0, #2147483648	; 0x80000000
     bf4:	e002      	b.n	bfc <__addsf3>
     bf6:	bf00      	nop

00000bf8 <__aeabi_fsub>:
     bf8:	f081 4100 	eor.w	r1, r1, #2147483648	; 0x80000000

00000bfc <__addsf3>:
     bfc:	0042      	lsls	r2, r0, #1
     bfe:	bf1f      	itttt	ne
     c00:	ea5f 0341 	movsne.w	r3, r1, lsl #1
     c04:	ea92 0f03 	teqne	r2, r3
     c08:	ea7f 6c22 	mvnsne.w	ip, r2, asr #24
     c0c:	ea7f 6c23 	mvnsne.w	ip, r3, asr #24
     c10:	d06a      	beq.n	ce8 <__addsf3+0xec>
     c12:	ea4f 6212 	mov.w	r2, r2, lsr #24
     c16:	ebd2 6313 	rsbs	r3, r2, r3, lsr #24
     c1a:	bfc1      	itttt	gt
     c1c:	18d2      	addgt	r2, r2, r3
     c1e:	4041      	eorgt	r1, r0
     c20:	4048      	eorgt	r0, r1
     c22:	4041      	eorgt	r1, r0
     c24:	bfb8      	it	lt
     c26:	425b      	neglt	r3, r3
     c28:	2b19      	cmp	r3, #25
     c2a:	bf88      	it	hi
     c2c:	4770      	bxhi	lr
     c2e:	f010 4f00 	tst.w	r0, #2147483648	; 0x80000000
     c32:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000
     c36:	f020 407f 	bic.w	r0, r0, #4278190080	; 0xff000000
     c3a:	bf18      	it	ne
     c3c:	4240      	negne	r0, r0
     c3e:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000
     c42:	f441 0100 	orr.w	r1, r1, #8388608	; 0x800000
     c46:	f021 417f 	bic.w	r1, r1, #4278190080	; 0xff000000
     c4a:	bf18      	it	ne
     c4c:	4249      	negne	r1, r1
     c4e:	ea92 0f03 	teq	r2, r3
     c52:	d03f      	beq.n	cd4 <__addsf3+0xd8>
     c54:	f1a2 0201 	sub.w	r2, r2, #1
     c58:	fa41 fc03 	asr.w	ip, r1, r3
     c5c:	eb10 000c 	adds.w	r0, r0, ip
     c60:	f1c3 0320 	rsb	r3, r3, #32
     c64:	fa01 f103 	lsl.w	r1, r1, r3
     c68:	f000 4300 	and.w	r3, r0, #2147483648	; 0x80000000
     c6c:	d502      	bpl.n	c74 <__addsf3+0x78>
     c6e:	4249      	negs	r1, r1
     c70:	eb60 0040 	sbc.w	r0, r0, r0, lsl #1
     c74:	f5b0 0f00 	cmp.w	r0, #8388608	; 0x800000
     c78:	d313      	bcc.n	ca2 <__addsf3+0xa6>
     c7a:	f1b0 7f80 	cmp.w	r0, #16777216	; 0x1000000
     c7e:	d306      	bcc.n	c8e <__addsf3+0x92>
     c80:	0840      	lsrs	r0, r0, #1
     c82:	ea4f 0131 	mov.w	r1, r1, rrx
     c86:	f102 0201 	add.w	r2, r2, #1
     c8a:	2afe      	cmp	r2, #254	; 0xfe
     c8c:	d251      	bcs.n	d32 <__addsf3+0x136>
     c8e:	f1b1 4f00 	cmp.w	r1, #2147483648	; 0x80000000
     c92:	eb40 50c2 	adc.w	r0, r0, r2, lsl #23
     c96:	bf08      	it	eq
     c98:	f020 0001 	biceq.w	r0, r0, #1
     c9c:	ea40 0003 	orr.w	r0, r0, r3
     ca0:	4770      	bx	lr
     ca2:	0049      	lsls	r1, r1, #1
     ca4:	eb40 0000 	adc.w	r0, r0, r0
     ca8:	f410 0f00 	tst.w	r0, #8388608	; 0x800000
     cac:	f1a2 0201 	sub.w	r2, r2, #1
     cb0:	d1ed      	bne.n	c8e <__addsf3+0x92>
     cb2:	fab0 fc80 	clz	ip, r0
     cb6:	f1ac 0c08 	sub.w	ip, ip, #8
     cba:	ebb2 020c 	subs.w	r2, r2, ip
     cbe:	fa00 f00c 	lsl.w	r0, r0, ip
     cc2:	bfaa      	itet	ge
     cc4:	eb00 50c2 	addge.w	r0, r0, r2, lsl #23
     cc8:	4252      	neglt	r2, r2
     cca:	4318      	orrge	r0, r3
     ccc:	bfbc      	itt	lt
     cce:	40d0      	lsrlt	r0, r2
     cd0:	4318      	orrlt	r0, r3
     cd2:	4770      	bx	lr
     cd4:	f092 0f00 	teq	r2, #0
     cd8:	f481 0100 	eor.w	r1, r1, #8388608	; 0x800000
     cdc:	bf06      	itte	eq
     cde:	f480 0000 	eoreq.w	r0, r0, #8388608	; 0x800000
     ce2:	3201      	addeq	r2, #1
     ce4:	3b01      	subne	r3, #1
     ce6:	e7b5      	b.n	c54 <__addsf3+0x58>
     ce8:	ea4f 0341 	mov.w	r3, r1, lsl #1
     cec:	ea7f 6c22 	mvns.w	ip, r2, asr #24
     cf0:	bf18      	it	ne
     cf2:	ea7f 6c23 	mvnsne.w	ip, r3, asr #24
     cf6:	d021      	beq.n	d3c <__addsf3+0x140>
     cf8:	ea92 0f03 	teq	r2, r3
     cfc:	d004      	beq.n	d08 <__addsf3+0x10c>
     cfe:	f092 0f00 	teq	r2, #0
     d02:	bf08      	it	eq
     d04:	4608      	moveq	r0, r1
     d06:	4770      	bx	lr
     d08:	ea90 0f01 	teq	r0, r1
     d0c:	bf1c      	itt	ne
     d0e:	2000      	movne	r0, #0
     d10:	4770      	bxne	lr
     d12:	f012 4f7f 	tst.w	r2, #4278190080	; 0xff000000
     d16:	d104      	bne.n	d22 <__addsf3+0x126>
     d18:	0040      	lsls	r0, r0, #1
     d1a:	bf28      	it	cs
     d1c:	f040 4000 	orrcs.w	r0, r0, #2147483648	; 0x80000000
     d20:	4770      	bx	lr
     d22:	f112 7200 	adds.w	r2, r2, #33554432	; 0x2000000
     d26:	bf3c      	itt	cc
     d28:	f500 0000 	addcc.w	r0, r0, #8388608	; 0x800000
     d2c:	4770      	bxcc	lr
     d2e:	f000 4300 	and.w	r3, r0, #2147483648	; 0x80000000
     d32:	f043 40fe 	orr.w	r0, r3, #2130706432	; 0x7f000000
     d36:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000
     d3a:	4770      	bx	lr
     d3c:	ea7f 6222 	mvns.w	r2, r2, asr #24
     d40:	bf16      	itet	ne
     d42:	4608      	movne	r0, r1
     d44:	ea7f 6323 	mvnseq.w	r3, r3, asr #24
     d48:	4601      	movne	r1, r0
     d4a:	0242      	lsls	r2, r0, #9
     d4c:	bf06      	itte	eq
     d4e:	ea5f 2341 	movseq.w	r3, r1, lsl #9
     d52:	ea90 0f01 	teqeq	r0, r1
     d56:	f440 0080 	orrne.w	r0, r0, #4194304	; 0x400000
     d5a:	4770      	bx	lr

00000d5c <__aeabi_ui2f>:
     d5c:	f04f 0300 	mov.w	r3, #0
     d60:	e004      	b.n	d6c <__aeabi_i2f+0x8>
     d62:	bf00      	nop

00000d64 <__aeabi_i2f>:
     d64:	f010 4300 	ands.w	r3, r0, #2147483648	; 0x80000000
     d68:	bf48      	it	mi
     d6a:	4240      	negmi	r0, r0
     d6c:	ea5f 0c00 	movs.w	ip, r0
     d70:	bf08      	it	eq
     d72:	4770      	bxeq	lr
     d74:	f043 4396 	orr.w	r3, r3, #1258291200	; 0x4b000000
     d78:	4601      	mov	r1, r0
     d7a:	f04f 0000 	mov.w	r0, #0
     d7e:	e01c      	b.n	dba <__aeabi_l2f+0x2a>

00000d80 <__aeabi_ul2f>:
     d80:	ea50 0201 	orrs.w	r2, r0, r1
     d84:	bf08      	it	eq
     d86:	4770      	bxeq	lr
     d88:	f04f 0300 	mov.w	r3, #0
     d8c:	e00a      	b.n	da4 <__aeabi_l2f+0x14>
     d8e:	bf00      	nop

00000d90 <__aeabi_l2f>:
     d90:	ea50 0201 	orrs.w	r2, r0, r1
     d94:	bf08      	it	eq
     d96:	4770      	bxeq	lr
     d98:	f011 4300 	ands.w	r3, r1, #2147483648	; 0x80000000
     d9c:	d502      	bpl.n	da4 <__aeabi_l2f+0x14>
     d9e:	4240      	negs	r0, r0
     da0:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
     da4:	ea5f 0c01 	movs.w	ip, r1
     da8:	bf02      	ittt	eq
     daa:	4684      	moveq	ip, r0
     dac:	4601      	moveq	r1, r0
     dae:	2000      	moveq	r0, #0
     db0:	f043 43b6 	orr.w	r3, r3, #1526726656	; 0x5b000000
     db4:	bf08      	it	eq
     db6:	f1a3 5380 	subeq.w	r3, r3, #268435456	; 0x10000000
     dba:	f5a3 0300 	sub.w	r3, r3, #8388608	; 0x800000
     dbe:	fabc f28c 	clz	r2, ip
     dc2:	3a08      	subs	r2, #8
     dc4:	eba3 53c2 	sub.w	r3, r3, r2, lsl #23
     dc8:	db10      	blt.n	dec <__aeabi_l2f+0x5c>
     dca:	fa01 fc02 	lsl.w	ip, r1, r2
     dce:	4463      	add	r3, ip
     dd0:	fa00 fc02 	lsl.w	ip, r0, r2
     dd4:	f1c2 0220 	rsb	r2, r2, #32
     dd8:	f1bc 4f00 	cmp.w	ip, #2147483648	; 0x80000000
     ddc:	fa20 f202 	lsr.w	r2, r0, r2
     de0:	eb43 0002 	adc.w	r0, r3, r2
     de4:	bf08      	it	eq
     de6:	f020 0001 	biceq.w	r0, r0, #1
     dea:	4770      	bx	lr
     dec:	f102 0220 	add.w	r2, r2, #32
     df0:	fa01 fc02 	lsl.w	ip, r1, r2
     df4:	f1c2 0220 	rsb	r2, r2, #32
     df8:	ea50 004c 	orrs.w	r0, r0, ip, lsl #1
     dfc:	fa21 f202 	lsr.w	r2, r1, r2
     e00:	eb43 0002 	adc.w	r0, r3, r2
     e04:	bf08      	it	eq
     e06:	ea20 70dc 	biceq.w	r0, r0, ip, lsr #31
     e0a:	4770      	bx	lr

00000e0c <__aeabi_fmul>:
     e0c:	f04f 0cff 	mov.w	ip, #255	; 0xff
     e10:	ea1c 52d0 	ands.w	r2, ip, r0, lsr #23
     e14:	bf1e      	ittt	ne
     e16:	ea1c 53d1 	andsne.w	r3, ip, r1, lsr #23
     e1a:	ea92 0f0c 	teqne	r2, ip
     e1e:	ea93 0f0c 	teqne	r3, ip
     e22:	d06f      	beq.n	f04 <__aeabi_fmul+0xf8>
     e24:	441a      	add	r2, r3
     e26:	ea80 0c01 	eor.w	ip, r0, r1
     e2a:	0240      	lsls	r0, r0, #9
     e2c:	bf18      	it	ne
     e2e:	ea5f 2141 	movsne.w	r1, r1, lsl #9
     e32:	d01e      	beq.n	e72 <__aeabi_fmul+0x66>
     e34:	f04f 6300 	mov.w	r3, #134217728	; 0x8000000
     e38:	ea43 1050 	orr.w	r0, r3, r0, lsr #5
     e3c:	ea43 1151 	orr.w	r1, r3, r1, lsr #5
     e40:	fba0 3101 	umull	r3, r1, r0, r1
     e44:	f00c 4000 	and.w	r0, ip, #2147483648	; 0x80000000
     e48:	f5b1 0f00 	cmp.w	r1, #8388608	; 0x800000
     e4c:	bf3e      	ittt	cc
     e4e:	0049      	lslcc	r1, r1, #1
     e50:	ea41 71d3 	orrcc.w	r1, r1, r3, lsr #31
     e54:	005b      	lslcc	r3, r3, #1
     e56:	ea40 0001 	orr.w	r0, r0, r1
     e5a:	f162 027f 	sbc.w	r2, r2, #127	; 0x7f
     e5e:	2afd      	cmp	r2, #253	; 0xfd
     e60:	d81d      	bhi.n	e9e <__aeabi_fmul+0x92>
     e62:	f1b3 4f00 	cmp.w	r3, #2147483648	; 0x80000000
     e66:	eb40 50c2 	adc.w	r0, r0, r2, lsl #23
     e6a:	bf08      	it	eq
     e6c:	f020 0001 	biceq.w	r0, r0, #1
     e70:	4770      	bx	lr
     e72:	f090 0f00 	teq	r0, #0
     e76:	f00c 4c00 	and.w	ip, ip, #2147483648	; 0x80000000
     e7a:	bf08      	it	eq
     e7c:	0249      	lsleq	r1, r1, #9
     e7e:	ea4c 2050 	orr.w	r0, ip, r0, lsr #9
     e82:	ea40 2051 	orr.w	r0, r0, r1, lsr #9
     e86:	3a7f      	subs	r2, #127	; 0x7f
     e88:	bfc2      	ittt	gt
     e8a:	f1d2 03ff 	rsbsgt	r3, r2, #255	; 0xff
     e8e:	ea40 50c2 	orrgt.w	r0, r0, r2, lsl #23
     e92:	4770      	bxgt	lr
     e94:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000
     e98:	f04f 0300 	mov.w	r3, #0
     e9c:	3a01      	subs	r2, #1
     e9e:	dc5d      	bgt.n	f5c <__aeabi_fmul+0x150>
     ea0:	f112 0f19 	cmn.w	r2, #25
     ea4:	bfdc      	itt	le
     ea6:	f000 4000 	andle.w	r0, r0, #2147483648	; 0x80000000
     eaa:	4770      	bxle	lr
     eac:	f1c2 0200 	rsb	r2, r2, #0
     eb0:	0041      	lsls	r1, r0, #1
     eb2:	fa21 f102 	lsr.w	r1, r1, r2
     eb6:	f1c2 0220 	rsb	r2, r2, #32
     eba:	fa00 fc02 	lsl.w	ip, r0, r2
     ebe:	ea5f 0031 	movs.w	r0, r1, rrx
     ec2:	f140 0000 	adc.w	r0, r0, #0
     ec6:	ea53 034c 	orrs.w	r3, r3, ip, lsl #1
     eca:	bf08      	it	eq
     ecc:	ea20 70dc 	biceq.w	r0, r0, ip, lsr #31
     ed0:	4770      	bx	lr
     ed2:	f092 0f00 	teq	r2, #0
     ed6:	f000 4c00 	and.w	ip, r0, #2147483648	; 0x80000000
     eda:	bf02      	ittt	eq
     edc:	0040      	lsleq	r0, r0, #1
     ede:	f410 0f00 	tsteq.w	r0, #8388608	; 0x800000
     ee2:	3a01      	subeq	r2, #1
     ee4:	d0f9      	beq.n	eda <__aeabi_fmul+0xce>
     ee6:	ea40 000c 	orr.w	r0, r0, ip
     eea:	f093 0f00 	teq	r3, #0
     eee:	f001 4c00 	and.w	ip, r1, #2147483648	; 0x80000000
     ef2:	bf02      	ittt	eq
     ef4:	0049      	lsleq	r1, r1, #1
     ef6:	f411 0f00 	tsteq.w	r1, #8388608	; 0x800000
     efa:	3b01      	subeq	r3, #1
     efc:	d0f9      	beq.n	ef2 <__aeabi_fmul+0xe6>
     efe:	ea41 010c 	orr.w	r1, r1, ip
     f02:	e78f      	b.n	e24 <__aeabi_fmul+0x18>
     f04:	ea0c 53d1 	and.w	r3, ip, r1, lsr #23
     f08:	ea92 0f0c 	teq	r2, ip
     f0c:	bf18      	it	ne
     f0e:	ea93 0f0c 	teqne	r3, ip
     f12:	d00a      	beq.n	f2a <__aeabi_fmul+0x11e>
     f14:	f030 4c00 	bics.w	ip, r0, #2147483648	; 0x80000000
     f18:	bf18      	it	ne
     f1a:	f031 4c00 	bicsne.w	ip, r1, #2147483648	; 0x80000000
     f1e:	d1d8      	bne.n	ed2 <__aeabi_fmul+0xc6>
     f20:	ea80 0001 	eor.w	r0, r0, r1
     f24:	f000 4000 	and.w	r0, r0, #2147483648	; 0x80000000
     f28:	4770      	bx	lr
     f2a:	f090 0f00 	teq	r0, #0
     f2e:	bf17      	itett	ne
     f30:	f090 4f00 	teqne	r0, #2147483648	; 0x80000000
     f34:	4608      	moveq	r0, r1
     f36:	f091 0f00 	teqne	r1, #0
     f3a:	f091 4f00 	teqne	r1, #2147483648	; 0x80000000
     f3e:	d014      	beq.n	f6a <__aeabi_fmul+0x15e>
     f40:	ea92 0f0c 	teq	r2, ip
     f44:	d101      	bne.n	f4a <__aeabi_fmul+0x13e>
     f46:	0242      	lsls	r2, r0, #9
     f48:	d10f      	bne.n	f6a <__aeabi_fmul+0x15e>
     f4a:	ea93 0f0c 	teq	r3, ip
     f4e:	d103      	bne.n	f58 <__aeabi_fmul+0x14c>
     f50:	024b      	lsls	r3, r1, #9
     f52:	bf18      	it	ne
     f54:	4608      	movne	r0, r1
     f56:	d108      	bne.n	f6a <__aeabi_fmul+0x15e>
     f58:	ea80 0001 	eor.w	r0, r0, r1
     f5c:	f000 4000 	and.w	r0, r0, #2147483648	; 0x80000000
     f60:	f040 40fe 	orr.w	r0, r0, #2130706432	; 0x7f000000
     f64:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000
     f68:	4770      	bx	lr
     f6a:	f040 40fe 	orr.w	r0, r0, #2130706432	; 0x7f000000
     f6e:	f440 0040 	orr.w	r0, r0, #12582912	; 0xc00000
     f72:	4770      	bx	lr

00000f74 <__aeabi_fdiv>:
     f74:	f04f 0cff 	mov.w	ip, #255	; 0xff
     f78:	ea1c 52d0 	ands.w	r2, ip, r0, lsr #23
     f7c:	bf1e      	ittt	ne
     f7e:	ea1c 53d1 	andsne.w	r3, ip, r1, lsr #23
     f82:	ea92 0f0c 	teqne	r2, ip
     f86:	ea93 0f0c 	teqne	r3, ip
     f8a:	d069      	beq.n	1060 <__aeabi_fdiv+0xec>
     f8c:	eba2 0203 	sub.w	r2, r2, r3
     f90:	ea80 0c01 	eor.w	ip, r0, r1
     f94:	0249      	lsls	r1, r1, #9
     f96:	ea4f 2040 	mov.w	r0, r0, lsl #9
     f9a:	d037      	beq.n	100c <__aeabi_fdiv+0x98>
     f9c:	f04f 5380 	mov.w	r3, #268435456	; 0x10000000
     fa0:	ea43 1111 	orr.w	r1, r3, r1, lsr #4
     fa4:	ea43 1310 	orr.w	r3, r3, r0, lsr #4
     fa8:	f00c 4000 	and.w	r0, ip, #2147483648	; 0x80000000
     fac:	428b      	cmp	r3, r1
     fae:	bf38      	it	cc
     fb0:	005b      	lslcc	r3, r3, #1
     fb2:	f142 027d 	adc.w	r2, r2, #125	; 0x7d
     fb6:	f44f 0c00 	mov.w	ip, #8388608	; 0x800000
     fba:	428b      	cmp	r3, r1
     fbc:	bf24      	itt	cs
     fbe:	1a5b      	subcs	r3, r3, r1
     fc0:	ea40 000c 	orrcs.w	r0, r0, ip
     fc4:	ebb3 0f51 	cmp.w	r3, r1, lsr #1
     fc8:	bf24      	itt	cs
     fca:	eba3 0351 	subcs.w	r3, r3, r1, lsr #1
     fce:	ea40 005c 	orrcs.w	r0, r0, ip, lsr #1
     fd2:	ebb3 0f91 	cmp.w	r3, r1, lsr #2
     fd6:	bf24      	itt	cs
     fd8:	eba3 0391 	subcs.w	r3, r3, r1, lsr #2
     fdc:	ea40 009c 	orrcs.w	r0, r0, ip, lsr #2
     fe0:	ebb3 0fd1 	cmp.w	r3, r1, lsr #3
     fe4:	bf24      	itt	cs
     fe6:	eba3 03d1 	subcs.w	r3, r3, r1, lsr #3
     fea:	ea40 00dc 	orrcs.w	r0, r0, ip, lsr #3
     fee:	011b      	lsls	r3, r3, #4
     ff0:	bf18      	it	ne
     ff2:	ea5f 1c1c 	movsne.w	ip, ip, lsr #4
     ff6:	d1e0      	bne.n	fba <__aeabi_fdiv+0x46>
     ff8:	2afd      	cmp	r2, #253	; 0xfd
     ffa:	f63f af50 	bhi.w	e9e <__aeabi_fmul+0x92>
     ffe:	428b      	cmp	r3, r1
    1000:	eb40 50c2 	adc.w	r0, r0, r2, lsl #23
    1004:	bf08      	it	eq
    1006:	f020 0001 	biceq.w	r0, r0, #1
    100a:	4770      	bx	lr
    100c:	f00c 4c00 	and.w	ip, ip, #2147483648	; 0x80000000
    1010:	ea4c 2050 	orr.w	r0, ip, r0, lsr #9
    1014:	327f      	adds	r2, #127	; 0x7f
    1016:	bfc2      	ittt	gt
    1018:	f1d2 03ff 	rsbsgt	r3, r2, #255	; 0xff
    101c:	ea40 50c2 	orrgt.w	r0, r0, r2, lsl #23
    1020:	4770      	bxgt	lr
    1022:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000
    1026:	f04f 0300 	mov.w	r3, #0
    102a:	3a01      	subs	r2, #1
    102c:	e737      	b.n	e9e <__aeabi_fmul+0x92>
    102e:	f092 0f00 	teq	r2, #0
    1032:	f000 4c00 	and.w	ip, r0, #2147483648	; 0x80000000
    1036:	bf02      	ittt	eq
    1038:	0040      	lsleq	r0, r0, #1
    103a:	f410 0f00 	tsteq.w	r0, #8388608	; 0x800000
    103e:	3a01      	subeq	r2, #1
    1040:	d0f9      	beq.n	1036 <__aeabi_fdiv+0xc2>
    1042:	ea40 000c 	orr.w	r0, r0, ip
    1046:	f093 0f00 	teq	r3, #0
    104a:	f001 4c00 	and.w	ip, r1, #2147483648	; 0x80000000
    104e:	bf02      	ittt	eq
    1050:	0049      	lsleq	r1, r1, #1
    1052:	f411 0f00 	tsteq.w	r1, #8388608	; 0x800000
    1056:	3b01      	subeq	r3, #1
    1058:	d0f9      	beq.n	104e <__aeabi_fdiv+0xda>
    105a:	ea41 010c 	orr.w	r1, r1, ip
    105e:	e795      	b.n	f8c <__aeabi_fdiv+0x18>
    1060:	ea0c 53d1 	and.w	r3, ip, r1, lsr #23
    1064:	ea92 0f0c 	teq	r2, ip
    1068:	d108      	bne.n	107c <__aeabi_fdiv+0x108>
    106a:	0242      	lsls	r2, r0, #9
    106c:	f47f af7d 	bne.w	f6a <__aeabi_fmul+0x15e>
    1070:	ea93 0f0c 	teq	r3, ip
    1074:	f47f af70 	bne.w	f58 <__aeabi_fmul+0x14c>
    1078:	4608      	mov	r0, r1
    107a:	e776      	b.n	f6a <__aeabi_fmul+0x15e>
    107c:	ea93 0f0c 	teq	r3, ip
    1080:	d104      	bne.n	108c <__aeabi_fdiv+0x118>
    1082:	024b      	lsls	r3, r1, #9
    1084:	f43f af4c 	beq.w	f20 <__aeabi_fmul+0x114>
    1088:	4608      	mov	r0, r1
    108a:	e76e      	b.n	f6a <__aeabi_fmul+0x15e>
    108c:	f030 4c00 	bics.w	ip, r0, #2147483648	; 0x80000000
    1090:	bf18      	it	ne
    1092:	f031 4c00 	bicsne.w	ip, r1, #2147483648	; 0x80000000
    1096:	d1ca      	bne.n	102e <__aeabi_fdiv+0xba>
    1098:	f030 4200 	bics.w	r2, r0, #2147483648	; 0x80000000
    109c:	f47f af5c 	bne.w	f58 <__aeabi_fmul+0x14c>
    10a0:	f031 4300 	bics.w	r3, r1, #2147483648	; 0x80000000
    10a4:	f47f af3c 	bne.w	f20 <__aeabi_fmul+0x114>
    10a8:	e75f      	b.n	f6a <__aeabi_fmul+0x15e>
    10aa:	bf00      	nop

000010ac <strcmp>:
    10ac:	ea80 0c01 	eor.w	ip, r0, r1
    10b0:	f01c 0f03 	tst.w	ip, #3
    10b4:	d137      	bne.n	1126 <strcmp+0x7a>
    10b6:	f010 0c03 	ands.w	ip, r0, #3
    10ba:	f020 0003 	bic.w	r0, r0, #3
    10be:	f021 0103 	bic.w	r1, r1, #3
    10c2:	f850 2b04 	ldr.w	r2, [r0], #4
    10c6:	bf08      	it	eq
    10c8:	f851 3b04 	ldreq.w	r3, [r1], #4
    10cc:	d00e      	beq.n	10ec <strcmp+0x40>
    10ce:	f08c 0c03 	eor.w	ip, ip, #3
    10d2:	f06f 437f 	mvn.w	r3, #4278190080	; 0xff000000
    10d6:	ea4f 0ccc 	mov.w	ip, ip, lsl #3
    10da:	fa23 fc0c 	lsr.w	ip, r3, ip
    10de:	f851 3b04 	ldr.w	r3, [r1], #4
    10e2:	ea42 020c 	orr.w	r2, r2, ip
    10e6:	ea43 030c 	orr.w	r3, r3, ip
    10ea:	bf00      	nop
    10ec:	f1a2 3c01 	sub.w	ip, r2, #16843009	; 0x1010101
    10f0:	429a      	cmp	r2, r3
    10f2:	bf01      	itttt	eq
    10f4:	ea2c 0c02 	biceq.w	ip, ip, r2
    10f8:	f01c 3f80 	tsteq.w	ip, #2155905152	; 0x80808080
    10fc:	f850 2b04 	ldreq.w	r2, [r0], #4
    1100:	f851 3b04 	ldreq.w	r3, [r1], #4
    1104:	d0f2      	beq.n	10ec <strcmp+0x40>
    1106:	ea4f 6002 	mov.w	r0, r2, lsl #24
    110a:	ea4f 2212 	mov.w	r2, r2, lsr #8
    110e:	2801      	cmp	r0, #1
    1110:	bf28      	it	cs
    1112:	ebb0 6f03 	cmpcs.w	r0, r3, lsl #24
    1116:	bf08      	it	eq
    1118:	0a1b      	lsreq	r3, r3, #8
    111a:	d0f4      	beq.n	1106 <strcmp+0x5a>
    111c:	f003 03ff 	and.w	r3, r3, #255	; 0xff
    1120:	0e00      	lsrs	r0, r0, #24
    1122:	1ac0      	subs	r0, r0, r3
    1124:	4770      	bx	lr
    1126:	f010 0f03 	tst.w	r0, #3
    112a:	d00a      	beq.n	1142 <strcmp+0x96>
    112c:	f810 2b01 	ldrb.w	r2, [r0], #1
    1130:	f811 3b01 	ldrb.w	r3, [r1], #1
    1134:	2a01      	cmp	r2, #1
    1136:	bf28      	it	cs
    1138:	429a      	cmpcs	r2, r3
    113a:	d0f4      	beq.n	1126 <strcmp+0x7a>
    113c:	eba2 0003 	sub.w	r0, r2, r3
    1140:	4770      	bx	lr
    1142:	f84d 5d04 	str.w	r5, [sp, #-4]!
    1146:	f850 2b04 	ldr.w	r2, [r0], #4
    114a:	f001 0503 	and.w	r5, r1, #3
    114e:	f021 0103 	bic.w	r1, r1, #3
    1152:	f851 3b04 	ldr.w	r3, [r1], #4
    1156:	2d02      	cmp	r5, #2
    1158:	d026      	beq.n	11a8 <strcmp+0xfc>
    115a:	d84d      	bhi.n	11f8 <strcmp+0x14c>
    115c:	f022 457f 	bic.w	r5, r2, #4278190080	; 0xff000000
    1160:	ebb5 2f13 	cmp.w	r5, r3, lsr #8
    1164:	f1a2 3c01 	sub.w	ip, r2, #16843009	; 0x1010101
    1168:	ea2c 0c02 	bic.w	ip, ip, r2
    116c:	d10d      	bne.n	118a <strcmp+0xde>
    116e:	f01c 3c80 	ands.w	ip, ip, #2155905152	; 0x80808080
    1172:	bf08      	it	eq
    1174:	f851 3b04 	ldreq.w	r3, [r1], #4
    1178:	d10a      	bne.n	1190 <strcmp+0xe4>
    117a:	ea85 0502 	eor.w	r5, r5, r2
    117e:	ebb5 6f03 	cmp.w	r5, r3, lsl #24
    1182:	d10c      	bne.n	119e <strcmp+0xf2>
    1184:	f850 2b04 	ldr.w	r2, [r0], #4
    1188:	e7e8      	b.n	115c <strcmp+0xb0>
    118a:	ea4f 2313 	mov.w	r3, r3, lsr #8
    118e:	e05b      	b.n	1248 <strcmp+0x19c>
    1190:	f03c 4c7f 	bics.w	ip, ip, #4278190080	; 0xff000000
    1194:	d154      	bne.n	1240 <strcmp+0x194>
    1196:	780b      	ldrb	r3, [r1, #0]
    1198:	ea4f 6512 	mov.w	r5, r2, lsr #24
    119c:	e054      	b.n	1248 <strcmp+0x19c>
    119e:	ea4f 6512 	mov.w	r5, r2, lsr #24
    11a2:	f003 03ff 	and.w	r3, r3, #255	; 0xff
    11a6:	e04f      	b.n	1248 <strcmp+0x19c>
    11a8:	ea4f 4502 	mov.w	r5, r2, lsl #16
    11ac:	f1a2 3c01 	sub.w	ip, r2, #16843009	; 0x1010101
    11b0:	ea4f 4515 	mov.w	r5, r5, lsr #16
    11b4:	ea2c 0c02 	bic.w	ip, ip, r2
    11b8:	ebb5 4f13 	cmp.w	r5, r3, lsr #16
    11bc:	d118      	bne.n	11f0 <strcmp+0x144>
    11be:	f01c 3c80 	ands.w	ip, ip, #2155905152	; 0x80808080
    11c2:	bf08      	it	eq
    11c4:	f851 3b04 	ldreq.w	r3, [r1], #4
    11c8:	d107      	bne.n	11da <strcmp+0x12e>
    11ca:	ea85 0502 	eor.w	r5, r5, r2
    11ce:	ebb5 4f03 	cmp.w	r5, r3, lsl #16
    11d2:	d109      	bne.n	11e8 <strcmp+0x13c>
    11d4:	f850 2b04 	ldr.w	r2, [r0], #4
    11d8:	e7e6      	b.n	11a8 <strcmp+0xfc>
    11da:	ea5f 4c0c 	movs.w	ip, ip, lsl #16
    11de:	d12f      	bne.n	1240 <strcmp+0x194>
    11e0:	880b      	ldrh	r3, [r1, #0]
    11e2:	ea4f 4512 	mov.w	r5, r2, lsr #16
    11e6:	e02f      	b.n	1248 <strcmp+0x19c>
    11e8:	ea4f 4303 	mov.w	r3, r3, lsl #16
    11ec:	ea4f 4512 	mov.w	r5, r2, lsr #16
    11f0:	ea4f 4313 	mov.w	r3, r3, lsr #16
    11f4:	e028      	b.n	1248 <strcmp+0x19c>
    11f6:	bf00      	nop
    11f8:	f002 05ff 	and.w	r5, r2, #255	; 0xff
    11fc:	ebb5 6f13 	cmp.w	r5, r3, lsr #24
    1200:	f1a2 3c01 	sub.w	ip, r2, #16843009	; 0x1010101
    1204:	ea2c 0c02 	bic.w	ip, ip, r2
    1208:	d10d      	bne.n	1226 <strcmp+0x17a>
    120a:	f01c 3c80 	ands.w	ip, ip, #2155905152	; 0x80808080
    120e:	bf08      	it	eq
    1210:	f851 3b04 	ldreq.w	r3, [r1], #4
    1214:	d10a      	bne.n	122c <strcmp+0x180>
    1216:	ea85 0502 	eor.w	r5, r5, r2
    121a:	ebb5 2f03 	cmp.w	r5, r3, lsl #8
    121e:	d10a      	bne.n	1236 <strcmp+0x18a>
    1220:	f850 2b04 	ldr.w	r2, [r0], #4
    1224:	e7e8      	b.n	11f8 <strcmp+0x14c>
    1226:	ea4f 6313 	mov.w	r3, r3, lsr #24
    122a:	e00d      	b.n	1248 <strcmp+0x19c>
    122c:	f012 0fff 	tst.w	r2, #255	; 0xff
    1230:	d006      	beq.n	1240 <strcmp+0x194>
    1232:	f851 3b04 	ldr.w	r3, [r1], #4
    1236:	ea4f 2512 	mov.w	r5, r2, lsr #8
    123a:	f023 437f 	bic.w	r3, r3, #4278190080	; 0xff000000
    123e:	e003      	b.n	1248 <strcmp+0x19c>
    1240:	f04f 0000 	mov.w	r0, #0
    1244:	bc20      	pop	{r5}
    1246:	4770      	bx	lr
    1248:	f005 02ff 	and.w	r2, r5, #255	; 0xff
    124c:	f003 00ff 	and.w	r0, r3, #255	; 0xff
    1250:	2801      	cmp	r0, #1
    1252:	bf28      	it	cs
    1254:	4290      	cmpcs	r0, r2
    1256:	bf04      	itt	eq
    1258:	0a2d      	lsreq	r5, r5, #8
    125a:	0a1b      	lsreq	r3, r3, #8
    125c:	d0f4      	beq.n	1248 <strcmp+0x19c>
    125e:	eba2 0000 	sub.w	r0, r2, r0
    1262:	bc20      	pop	{r5}
    1264:	4770      	bx	lr
    1266:	bf00      	nop

Disassembly of section .text.arm_Init:

00001268 <arm_Init>:
    1268:	4b3e      	ldr	r3, [pc, #248]	; (1364 <arm_Init+0xfc>)
    126a:	2000      	movs	r0, #0
    126c:	b570      	push	{r4, r5, r6, lr}
    126e:	6018      	str	r0, [r3, #0]
    1270:	4b3d      	ldr	r3, [pc, #244]	; (1368 <arm_Init+0x100>)
    1272:	f44f 4200 	mov.w	r2, #32768	; 0x8000
    1276:	493d      	ldr	r1, [pc, #244]	; (136c <arm_Init+0x104>)
    1278:	601a      	str	r2, [r3, #0]
    127a:	680b      	ldr	r3, [r1, #0]
    127c:	4a3c      	ldr	r2, [pc, #240]	; (1370 <arm_Init+0x108>)
    127e:	f023 03ff 	bic.w	r3, r3, #255	; 0xff
    1282:	f043 0301 	orr.w	r3, r3, #1
    1286:	600b      	str	r3, [r1, #0]
    1288:	4b3a      	ldr	r3, [pc, #232]	; (1374 <arm_Init+0x10c>)
    128a:	6010      	str	r0, [r2, #0]
    128c:	6818      	ldr	r0, [r3, #0]
    128e:	f020 0020 	bic.w	r0, r0, #32
    1292:	6018      	str	r0, [r3, #0]
    1294:	6818      	ldr	r0, [r3, #0]
    1296:	f040 0020 	orr.w	r0, r0, #32
    129a:	6018      	str	r0, [r3, #0]
    129c:	6818      	ldr	r0, [r3, #0]
    129e:	0640      	lsls	r0, r0, #25
    12a0:	d5fc      	bpl.n	129c <arm_Init+0x34>
    12a2:	2301      	movs	r3, #1
    12a4:	6013      	str	r3, [r2, #0]
    12a6:	4a34      	ldr	r2, [pc, #208]	; (1378 <arm_Init+0x110>)
    12a8:	2300      	movs	r3, #0
    12aa:	6013      	str	r3, [r2, #0]
    12ac:	4d33      	ldr	r5, [pc, #204]	; (137c <arm_Init+0x114>)
    12ae:	4b34      	ldr	r3, [pc, #208]	; (1380 <arm_Init+0x118>)
    12b0:	24aa      	movs	r4, #170	; 0xaa
    12b2:	2055      	movs	r0, #85	; 0x55
    12b4:	260e      	movs	r6, #14
    12b6:	601c      	str	r4, [r3, #0]
    12b8:	6018      	str	r0, [r3, #0]
    12ba:	602e      	str	r6, [r5, #0]
    12bc:	601c      	str	r4, [r3, #0]
    12be:	6018      	str	r0, [r3, #0]
    12c0:	6815      	ldr	r5, [r2, #0]
    12c2:	f045 0501 	orr.w	r5, r5, #1
    12c6:	6015      	str	r5, [r2, #0]
    12c8:	4d2e      	ldr	r5, [pc, #184]	; (1384 <arm_Init+0x11c>)
    12ca:	601c      	str	r4, [r3, #0]
    12cc:	6018      	str	r0, [r3, #0]
    12ce:	6828      	ldr	r0, [r5, #0]
    12d0:	4c2c      	ldr	r4, [pc, #176]	; (1384 <arm_Init+0x11c>)
    12d2:	f010 6f80 	tst.w	r0, #67108864	; 0x4000000
    12d6:	d0fa      	beq.n	12ce <arm_Init+0x66>
    12d8:	6810      	ldr	r0, [r2, #0]
    12da:	f040 0002 	orr.w	r0, r0, #2
    12de:	6010      	str	r0, [r2, #0]
    12e0:	22aa      	movs	r2, #170	; 0xaa
    12e2:	601a      	str	r2, [r3, #0]
    12e4:	2255      	movs	r2, #85	; 0x55
    12e6:	601a      	str	r2, [r3, #0]
    12e8:	6823      	ldr	r3, [r4, #0]
    12ea:	019a      	lsls	r2, r3, #6
    12ec:	d5fc      	bpl.n	12e8 <arm_Init+0x80>
    12ee:	4a26      	ldr	r2, [pc, #152]	; (1388 <arm_Init+0x120>)
    12f0:	2300      	movs	r3, #0
    12f2:	6013      	str	r3, [r2, #0]
    12f4:	4d25      	ldr	r5, [pc, #148]	; (138c <arm_Init+0x124>)
    12f6:	4b26      	ldr	r3, [pc, #152]	; (1390 <arm_Init+0x128>)
    12f8:	24aa      	movs	r4, #170	; 0xaa
    12fa:	2055      	movs	r0, #85	; 0x55
    12fc:	2607      	movs	r6, #7
    12fe:	601c      	str	r4, [r3, #0]
    1300:	6018      	str	r0, [r3, #0]
    1302:	602e      	str	r6, [r5, #0]
    1304:	601c      	str	r4, [r3, #0]
    1306:	6018      	str	r0, [r3, #0]
    1308:	6815      	ldr	r5, [r2, #0]
    130a:	f045 0501 	orr.w	r5, r5, #1
    130e:	6015      	str	r5, [r2, #0]
    1310:	4d20      	ldr	r5, [pc, #128]	; (1394 <arm_Init+0x12c>)
    1312:	601c      	str	r4, [r3, #0]
    1314:	6018      	str	r0, [r3, #0]
    1316:	6828      	ldr	r0, [r5, #0]
    1318:	4c1e      	ldr	r4, [pc, #120]	; (1394 <arm_Init+0x12c>)
    131a:	f410 6f80 	tst.w	r0, #1024	; 0x400
    131e:	d0fa      	beq.n	1316 <arm_Init+0xae>
    1320:	6810      	ldr	r0, [r2, #0]
    1322:	f040 0002 	orr.w	r0, r0, #2
    1326:	6010      	str	r0, [r2, #0]
    1328:	22aa      	movs	r2, #170	; 0xaa
    132a:	601a      	str	r2, [r3, #0]
    132c:	2255      	movs	r2, #85	; 0x55
    132e:	601a      	str	r2, [r3, #0]
    1330:	6823      	ldr	r3, [r4, #0]
    1332:	059b      	lsls	r3, r3, #22
    1334:	d5fc      	bpl.n	1330 <arm_Init+0xc8>
    1336:	4a18      	ldr	r2, [pc, #96]	; (1398 <arm_Init+0x130>)
    1338:	6813      	ldr	r3, [r2, #0]
    133a:	f023 030f 	bic.w	r3, r3, #15
    133e:	f043 0301 	orr.w	r3, r3, #1
    1342:	6013      	str	r3, [r2, #0]
    1344:	680b      	ldr	r3, [r1, #0]
    1346:	f023 03ff 	bic.w	r3, r3, #255	; 0xff
    134a:	f043 0302 	orr.w	r3, r3, #2
    134e:	600b      	str	r3, [r1, #0]
    1350:	2300      	movs	r3, #0
    1352:	f8c2 30a0 	str.w	r3, [r2, #160]	; 0xa0
    1356:	f8c2 30a4 	str.w	r3, [r2, #164]	; 0xa4
    135a:	f244 023a 	movw	r2, #16442	; 0x403a
    135e:	4b0f      	ldr	r3, [pc, #60]	; (139c <arm_Init+0x134>)
    1360:	601a      	str	r2, [r3, #0]
    1362:	bd70      	pop	{r4, r5, r6, pc}
    1364:	e000ed08 	.word	0xe000ed08
    1368:	400fc0c4 	.word	0x400fc0c4
    136c:	400fc104 	.word	0x400fc104
    1370:	400fc10c 	.word	0x400fc10c
    1374:	400fc1a0 	.word	0x400fc1a0
    1378:	400fc080 	.word	0x400fc080
    137c:	400fc084 	.word	0x400fc084
    1380:	400fc08c 	.word	0x400fc08c
    1384:	400fc088 	.word	0x400fc088
    1388:	400fc0a0 	.word	0x400fc0a0
    138c:	400fc0a4 	.word	0x400fc0a4
    1390:	400fc0ac 	.word	0x400fc0ac
    1394:	400fc0a8 	.word	0x400fc0a8
    1398:	400fc108 	.word	0x400fc108
    139c:	400fc000 	.word	0x400fc000

Disassembly of section .text._start:

000013a0 <_start>:
    13a0:	b508      	push	{r3, lr}
    13a2:	b672      	cpsid	i
    13a4:	f7ff ff60 	bl	1268 <arm_Init>
    13a8:	4a0a      	ldr	r2, [pc, #40]	; (13d4 <_start+0x34>)
    13aa:	4b0b      	ldr	r3, [pc, #44]	; (13d8 <_start+0x38>)
    13ac:	490b      	ldr	r1, [pc, #44]	; (13dc <_start+0x3c>)
    13ae:	428b      	cmp	r3, r1
    13b0:	d204      	bcs.n	13bc <_start+0x1c>
    13b2:	f852 0f04 	ldr.w	r0, [r2, #4]!
    13b6:	f843 0b04 	str.w	r0, [r3], #4
    13ba:	e7f8      	b.n	13ae <_start+0xe>
    13bc:	4b08      	ldr	r3, [pc, #32]	; (13e0 <_start+0x40>)
    13be:	4a09      	ldr	r2, [pc, #36]	; (13e4 <_start+0x44>)
    13c0:	2100      	movs	r1, #0
    13c2:	4293      	cmp	r3, r2
    13c4:	d202      	bcs.n	13cc <_start+0x2c>
    13c6:	f843 1b04 	str.w	r1, [r3], #4
    13ca:	e7fa      	b.n	13c2 <_start+0x22>
    13cc:	f000 ff8e 	bl	22ec <main>
    13d0:	e7fe      	b.n	13d0 <_start+0x30>
    13d2:	bf00      	nop
    13d4:	00005648 	.word	0x00005648
    13d8:	10000000 	.word	0x10000000
    13dc:	1000061c 	.word	0x1000061c
    13e0:	1000061c 	.word	0x1000061c
    13e4:	10000b14 	.word	0x10000b14

Disassembly of section .text.nmi_ISR:

000013e8 <nmi_ISR>:
    13e8:	b508      	push	{r3, lr}
    13ea:	4905      	ldr	r1, [pc, #20]	; (1400 <nmi_ISR+0x18>)
    13ec:	2002      	movs	r0, #2
    13ee:	f002 fabb 	bl	3968 <rprintf>
    13f2:	4b04      	ldr	r3, [pc, #16]	; (1404 <nmi_ISR+0x1c>)
    13f4:	681a      	ldr	r2, [r3, #0]
    13f6:	b112      	cbz	r2, 13fe <nmi_ISR+0x16>
    13f8:	681b      	ldr	r3, [r3, #0]
    13fa:	2001      	movs	r0, #1
    13fc:	4798      	blx	r3
    13fe:	e7fe      	b.n	13fe <nmi_ISR+0x16>
    1400:	0000490c 	.word	0x0000490c
    1404:	100007f8 	.word	0x100007f8

Disassembly of section .text.hardFault_ISR:

00001408 <hardFault_ISR>:
    1408:	b508      	push	{r3, lr}
    140a:	490d      	ldr	r1, [pc, #52]	; (1440 <hardFault_ISR+0x38>)
    140c:	2002      	movs	r0, #2
    140e:	f002 faab 	bl	3968 <rprintf>
    1412:	490c      	ldr	r1, [pc, #48]	; (1444 <hardFault_ISR+0x3c>)
    1414:	2002      	movs	r0, #2
    1416:	f002 faa7 	bl	3968 <rprintf>
    141a:	490b      	ldr	r1, [pc, #44]	; (1448 <hardFault_ISR+0x40>)
    141c:	2002      	movs	r0, #2
    141e:	f002 faa3 	bl	3968 <rprintf>
    1422:	490a      	ldr	r1, [pc, #40]	; (144c <hardFault_ISR+0x44>)
    1424:	2002      	movs	r0, #2
    1426:	f002 fa9f 	bl	3968 <rprintf>
    142a:	4909      	ldr	r1, [pc, #36]	; (1450 <hardFault_ISR+0x48>)
    142c:	2002      	movs	r0, #2
    142e:	f002 fa9b 	bl	3968 <rprintf>
    1432:	4b08      	ldr	r3, [pc, #32]	; (1454 <hardFault_ISR+0x4c>)
    1434:	681a      	ldr	r2, [r3, #0]
    1436:	b112      	cbz	r2, 143e <hardFault_ISR+0x36>
    1438:	681b      	ldr	r3, [r3, #0]
    143a:	2002      	movs	r0, #2
    143c:	4798      	blx	r3
    143e:	e7fe      	b.n	143e <hardFault_ISR+0x36>
    1440:	00004917 	.word	0x00004917
    1444:	00004929 	.word	0x00004929
    1448:	0000493c 	.word	0x0000493c
    144c:	00004976 	.word	0x00004976
    1450:	00004996 	.word	0x00004996
    1454:	100007f8 	.word	0x100007f8

Disassembly of section .text.memManage_ISR:

00001458 <memManage_ISR>:
    1458:	b508      	push	{r3, lr}
    145a:	4905      	ldr	r1, [pc, #20]	; (1470 <memManage_ISR+0x18>)
    145c:	2002      	movs	r0, #2
    145e:	f002 fa83 	bl	3968 <rprintf>
    1462:	4b04      	ldr	r3, [pc, #16]	; (1474 <memManage_ISR+0x1c>)
    1464:	681a      	ldr	r2, [r3, #0]
    1466:	b112      	cbz	r2, 146e <memManage_ISR+0x16>
    1468:	681b      	ldr	r3, [r3, #0]
    146a:	2003      	movs	r0, #3
    146c:	4798      	blx	r3
    146e:	e7fe      	b.n	146e <memManage_ISR+0x16>
    1470:	000049df 	.word	0x000049df
    1474:	100007f8 	.word	0x100007f8

Disassembly of section .text.busFault_ISR:

00001478 <busFault_ISR>:
    1478:	b508      	push	{r3, lr}
    147a:	4905      	ldr	r1, [pc, #20]	; (1490 <busFault_ISR+0x18>)
    147c:	2002      	movs	r0, #2
    147e:	f002 fa73 	bl	3968 <rprintf>
    1482:	4b04      	ldr	r3, [pc, #16]	; (1494 <busFault_ISR+0x1c>)
    1484:	681a      	ldr	r2, [r3, #0]
    1486:	b112      	cbz	r2, 148e <busFault_ISR+0x16>
    1488:	681b      	ldr	r3, [r3, #0]
    148a:	2004      	movs	r0, #4
    148c:	4798      	blx	r3
    148e:	e7fe      	b.n	148e <busFault_ISR+0x16>
    1490:	000049f0 	.word	0x000049f0
    1494:	100007f8 	.word	0x100007f8

Disassembly of section .text.usageFault_ISR:

00001498 <usageFault_ISR>:
    1498:	b508      	push	{r3, lr}
    149a:	4905      	ldr	r1, [pc, #20]	; (14b0 <usageFault_ISR+0x18>)
    149c:	2002      	movs	r0, #2
    149e:	f002 fa63 	bl	3968 <rprintf>
    14a2:	4b04      	ldr	r3, [pc, #16]	; (14b4 <usageFault_ISR+0x1c>)
    14a4:	681a      	ldr	r2, [r3, #0]
    14a6:	b112      	cbz	r2, 14ae <usageFault_ISR+0x16>
    14a8:	681b      	ldr	r3, [r3, #0]
    14aa:	2005      	movs	r0, #5
    14ac:	4798      	blx	r3
    14ae:	e7fe      	b.n	14ae <usageFault_ISR+0x16>
    14b0:	00004a00 	.word	0x00004a00
    14b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.svc_ISR:

000014b8 <svc_ISR>:
    14b8:	b508      	push	{r3, lr}
    14ba:	4905      	ldr	r1, [pc, #20]	; (14d0 <svc_ISR+0x18>)
    14bc:	2002      	movs	r0, #2
    14be:	f002 fa53 	bl	3968 <rprintf>
    14c2:	4b04      	ldr	r3, [pc, #16]	; (14d4 <svc_ISR+0x1c>)
    14c4:	681a      	ldr	r2, [r3, #0]
    14c6:	b112      	cbz	r2, 14ce <svc_ISR+0x16>
    14c8:	681b      	ldr	r3, [r3, #0]
    14ca:	2006      	movs	r0, #6
    14cc:	4798      	blx	r3
    14ce:	e7fe      	b.n	14ce <svc_ISR+0x16>
    14d0:	00004a16 	.word	0x00004a16
    14d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.debugMon_ISR:

000014d8 <debugMon_ISR>:
    14d8:	b508      	push	{r3, lr}
    14da:	4905      	ldr	r1, [pc, #20]	; (14f0 <debugMon_ISR+0x18>)
    14dc:	2002      	movs	r0, #2
    14de:	f002 fa43 	bl	3968 <rprintf>
    14e2:	4b04      	ldr	r3, [pc, #16]	; (14f4 <debugMon_ISR+0x1c>)
    14e4:	681a      	ldr	r2, [r3, #0]
    14e6:	b112      	cbz	r2, 14ee <debugMon_ISR+0x16>
    14e8:	681b      	ldr	r3, [r3, #0]
    14ea:	2007      	movs	r0, #7
    14ec:	4798      	blx	r3
    14ee:	e7fe      	b.n	14ee <debugMon_ISR+0x16>
    14f0:	00004a21 	.word	0x00004a21
    14f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.pendSV_ISR:

000014f8 <pendSV_ISR>:
    14f8:	b508      	push	{r3, lr}
    14fa:	4905      	ldr	r1, [pc, #20]	; (1510 <pendSV_ISR+0x18>)
    14fc:	2002      	movs	r0, #2
    14fe:	f002 fa33 	bl	3968 <rprintf>
    1502:	4b04      	ldr	r3, [pc, #16]	; (1514 <pendSV_ISR+0x1c>)
    1504:	681a      	ldr	r2, [r3, #0]
    1506:	b112      	cbz	r2, 150e <pendSV_ISR+0x16>
    1508:	681b      	ldr	r3, [r3, #0]
    150a:	2008      	movs	r0, #8
    150c:	4798      	blx	r3
    150e:	e7fe      	b.n	150e <pendSV_ISR+0x16>
    1510:	00004a31 	.word	0x00004a31
    1514:	100007f8 	.word	0x100007f8

Disassembly of section .text.wdt_ISR:

00001518 <wdt_ISR>:
    1518:	b508      	push	{r3, lr}
    151a:	4905      	ldr	r1, [pc, #20]	; (1530 <wdt_ISR+0x18>)
    151c:	2002      	movs	r0, #2
    151e:	f002 fa23 	bl	3968 <rprintf>
    1522:	4b04      	ldr	r3, [pc, #16]	; (1534 <wdt_ISR+0x1c>)
    1524:	681a      	ldr	r2, [r3, #0]
    1526:	b112      	cbz	r2, 152e <wdt_ISR+0x16>
    1528:	681b      	ldr	r3, [r3, #0]
    152a:	200a      	movs	r0, #10
    152c:	4798      	blx	r3
    152e:	e7fe      	b.n	152e <wdt_ISR+0x16>
    1530:	00004a4e 	.word	0x00004a4e
    1534:	100007f8 	.word	0x100007f8

Disassembly of section .text.timer0_ISR:

00001538 <timer0_ISR>:
    1538:	b508      	push	{r3, lr}
    153a:	4905      	ldr	r1, [pc, #20]	; (1550 <timer0_ISR+0x18>)
    153c:	2002      	movs	r0, #2
    153e:	f002 fa13 	bl	3968 <rprintf>
    1542:	4b04      	ldr	r3, [pc, #16]	; (1554 <timer0_ISR+0x1c>)
    1544:	681a      	ldr	r2, [r3, #0]
    1546:	b112      	cbz	r2, 154e <timer0_ISR+0x16>
    1548:	681b      	ldr	r3, [r3, #0]
    154a:	200b      	movs	r0, #11
    154c:	4798      	blx	r3
    154e:	e7fe      	b.n	154e <timer0_ISR+0x16>
    1550:	00004a59 	.word	0x00004a59
    1554:	100007f8 	.word	0x100007f8

Disassembly of section .text.timer2_ISR:

00001558 <timer2_ISR>:
    1558:	b508      	push	{r3, lr}
    155a:	4905      	ldr	r1, [pc, #20]	; (1570 <timer2_ISR+0x18>)
    155c:	2002      	movs	r0, #2
    155e:	f002 fa03 	bl	3968 <rprintf>
    1562:	4b04      	ldr	r3, [pc, #16]	; (1574 <timer2_ISR+0x1c>)
    1564:	681a      	ldr	r2, [r3, #0]
    1566:	b112      	cbz	r2, 156e <timer2_ISR+0x16>
    1568:	681b      	ldr	r3, [r3, #0]
    156a:	200d      	movs	r0, #13
    156c:	4798      	blx	r3
    156e:	e7fe      	b.n	156e <timer2_ISR+0x16>
    1570:	00004a75 	.word	0x00004a75
    1574:	100007f8 	.word	0x100007f8

Disassembly of section .text.timer3_ISR:

00001578 <timer3_ISR>:
    1578:	b508      	push	{r3, lr}
    157a:	4905      	ldr	r1, [pc, #20]	; (1590 <timer3_ISR+0x18>)
    157c:	2002      	movs	r0, #2
    157e:	f002 f9f3 	bl	3968 <rprintf>
    1582:	4b04      	ldr	r3, [pc, #16]	; (1594 <timer3_ISR+0x1c>)
    1584:	681a      	ldr	r2, [r3, #0]
    1586:	b112      	cbz	r2, 158e <timer3_ISR+0x16>
    1588:	681b      	ldr	r3, [r3, #0]
    158a:	200e      	movs	r0, #14
    158c:	4798      	blx	r3
    158e:	e7fe      	b.n	158e <timer3_ISR+0x16>
    1590:	00004a83 	.word	0x00004a83
    1594:	100007f8 	.word	0x100007f8

Disassembly of section .text.uart1_ISR:

00001598 <uart1_ISR>:
    1598:	b508      	push	{r3, lr}
    159a:	4905      	ldr	r1, [pc, #20]	; (15b0 <uart1_ISR+0x18>)
    159c:	2002      	movs	r0, #2
    159e:	f002 f9e3 	bl	3968 <rprintf>
    15a2:	4b04      	ldr	r3, [pc, #16]	; (15b4 <uart1_ISR+0x1c>)
    15a4:	681a      	ldr	r2, [r3, #0]
    15a6:	b112      	cbz	r2, 15ae <uart1_ISR+0x16>
    15a8:	681b      	ldr	r3, [r3, #0]
    15aa:	2010      	movs	r0, #16
    15ac:	4798      	blx	r3
    15ae:	e7fe      	b.n	15ae <uart1_ISR+0x16>
    15b0:	00004a9e 	.word	0x00004a9e
    15b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.uart2_ISR:

000015b8 <uart2_ISR>:
    15b8:	b508      	push	{r3, lr}
    15ba:	4905      	ldr	r1, [pc, #20]	; (15d0 <uart2_ISR+0x18>)
    15bc:	2002      	movs	r0, #2
    15be:	f002 f9d3 	bl	3968 <rprintf>
    15c2:	4b04      	ldr	r3, [pc, #16]	; (15d4 <uart2_ISR+0x1c>)
    15c4:	681a      	ldr	r2, [r3, #0]
    15c6:	b112      	cbz	r2, 15ce <uart2_ISR+0x16>
    15c8:	681b      	ldr	r3, [r3, #0]
    15ca:	2011      	movs	r0, #17
    15cc:	4798      	blx	r3
    15ce:	e7fe      	b.n	15ce <uart2_ISR+0x16>
    15d0:	00004aab 	.word	0x00004aab
    15d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.uart3_ISR:

000015d8 <uart3_ISR>:
    15d8:	b508      	push	{r3, lr}
    15da:	4905      	ldr	r1, [pc, #20]	; (15f0 <uart3_ISR+0x18>)
    15dc:	2002      	movs	r0, #2
    15de:	f002 f9c3 	bl	3968 <rprintf>
    15e2:	4b04      	ldr	r3, [pc, #16]	; (15f4 <uart3_ISR+0x1c>)
    15e4:	681a      	ldr	r2, [r3, #0]
    15e6:	b112      	cbz	r2, 15ee <uart3_ISR+0x16>
    15e8:	681b      	ldr	r3, [r3, #0]
    15ea:	2012      	movs	r0, #18
    15ec:	4798      	blx	r3
    15ee:	e7fe      	b.n	15ee <uart3_ISR+0x16>
    15f0:	00004ab8 	.word	0x00004ab8
    15f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.pwm_ISR:

000015f8 <pwm_ISR>:
    15f8:	b508      	push	{r3, lr}
    15fa:	4905      	ldr	r1, [pc, #20]	; (1610 <pwm_ISR+0x18>)
    15fc:	2002      	movs	r0, #2
    15fe:	f002 f9b3 	bl	3968 <rprintf>
    1602:	4b04      	ldr	r3, [pc, #16]	; (1614 <pwm_ISR+0x1c>)
    1604:	681a      	ldr	r2, [r3, #0]
    1606:	b112      	cbz	r2, 160e <pwm_ISR+0x16>
    1608:	681b      	ldr	r3, [r3, #0]
    160a:	2013      	movs	r0, #19
    160c:	4798      	blx	r3
    160e:	e7fe      	b.n	160e <pwm_ISR+0x16>
    1610:	00004ac5 	.word	0x00004ac5
    1614:	100007f8 	.word	0x100007f8

Disassembly of section .text.i2c0_ISR:

00001618 <i2c0_ISR>:
    1618:	b508      	push	{r3, lr}
    161a:	4905      	ldr	r1, [pc, #20]	; (1630 <i2c0_ISR+0x18>)
    161c:	2002      	movs	r0, #2
    161e:	f002 f9a3 	bl	3968 <rprintf>
    1622:	4b04      	ldr	r3, [pc, #16]	; (1634 <i2c0_ISR+0x1c>)
    1624:	681a      	ldr	r2, [r3, #0]
    1626:	b112      	cbz	r2, 162e <i2c0_ISR+0x16>
    1628:	681b      	ldr	r3, [r3, #0]
    162a:	2014      	movs	r0, #20
    162c:	4798      	blx	r3
    162e:	e7fe      	b.n	162e <i2c0_ISR+0x16>
    1630:	00004ad0 	.word	0x00004ad0
    1634:	100007f8 	.word	0x100007f8

Disassembly of section .text.i2c1_ISR:

00001638 <i2c1_ISR>:
    1638:	b508      	push	{r3, lr}
    163a:	4905      	ldr	r1, [pc, #20]	; (1650 <i2c1_ISR+0x18>)
    163c:	2002      	movs	r0, #2
    163e:	f002 f993 	bl	3968 <rprintf>
    1642:	4b04      	ldr	r3, [pc, #16]	; (1654 <i2c1_ISR+0x1c>)
    1644:	681a      	ldr	r2, [r3, #0]
    1646:	b112      	cbz	r2, 164e <i2c1_ISR+0x16>
    1648:	681b      	ldr	r3, [r3, #0]
    164a:	2015      	movs	r0, #21
    164c:	4798      	blx	r3
    164e:	e7fe      	b.n	164e <i2c1_ISR+0x16>
    1650:	00004adc 	.word	0x00004adc
    1654:	100007f8 	.word	0x100007f8

Disassembly of section .text.i2c2_ISR:

00001658 <i2c2_ISR>:
    1658:	b508      	push	{r3, lr}
    165a:	4905      	ldr	r1, [pc, #20]	; (1670 <i2c2_ISR+0x18>)
    165c:	2002      	movs	r0, #2
    165e:	f002 f983 	bl	3968 <rprintf>
    1662:	4b04      	ldr	r3, [pc, #16]	; (1674 <i2c2_ISR+0x1c>)
    1664:	681a      	ldr	r2, [r3, #0]
    1666:	b112      	cbz	r2, 166e <i2c2_ISR+0x16>
    1668:	681b      	ldr	r3, [r3, #0]
    166a:	2016      	movs	r0, #22
    166c:	4798      	blx	r3
    166e:	e7fe      	b.n	166e <i2c2_ISR+0x16>
    1670:	00004ae8 	.word	0x00004ae8
    1674:	100007f8 	.word	0x100007f8

Disassembly of section .text.spi_ISR:

00001678 <spi_ISR>:
    1678:	b508      	push	{r3, lr}
    167a:	4905      	ldr	r1, [pc, #20]	; (1690 <spi_ISR+0x18>)
    167c:	2002      	movs	r0, #2
    167e:	f002 f973 	bl	3968 <rprintf>
    1682:	4b04      	ldr	r3, [pc, #16]	; (1694 <spi_ISR+0x1c>)
    1684:	681a      	ldr	r2, [r3, #0]
    1686:	b112      	cbz	r2, 168e <spi_ISR+0x16>
    1688:	681b      	ldr	r3, [r3, #0]
    168a:	2017      	movs	r0, #23
    168c:	4798      	blx	r3
    168e:	e7fe      	b.n	168e <spi_ISR+0x16>
    1690:	00004af4 	.word	0x00004af4
    1694:	100007f8 	.word	0x100007f8

Disassembly of section .text.ssp0_ISR:

00001698 <ssp0_ISR>:
    1698:	b508      	push	{r3, lr}
    169a:	4905      	ldr	r1, [pc, #20]	; (16b0 <ssp0_ISR+0x18>)
    169c:	2002      	movs	r0, #2
    169e:	f002 f963 	bl	3968 <rprintf>
    16a2:	4b04      	ldr	r3, [pc, #16]	; (16b4 <ssp0_ISR+0x1c>)
    16a4:	681a      	ldr	r2, [r3, #0]
    16a6:	b112      	cbz	r2, 16ae <ssp0_ISR+0x16>
    16a8:	681b      	ldr	r3, [r3, #0]
    16aa:	2018      	movs	r0, #24
    16ac:	4798      	blx	r3
    16ae:	e7fe      	b.n	16ae <ssp0_ISR+0x16>
    16b0:	00004aff 	.word	0x00004aff
    16b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.ssp1_ISR:

000016b8 <ssp1_ISR>:
    16b8:	b508      	push	{r3, lr}
    16ba:	4905      	ldr	r1, [pc, #20]	; (16d0 <ssp1_ISR+0x18>)
    16bc:	2002      	movs	r0, #2
    16be:	f002 f953 	bl	3968 <rprintf>
    16c2:	4b04      	ldr	r3, [pc, #16]	; (16d4 <ssp1_ISR+0x1c>)
    16c4:	681a      	ldr	r2, [r3, #0]
    16c6:	b112      	cbz	r2, 16ce <ssp1_ISR+0x16>
    16c8:	681b      	ldr	r3, [r3, #0]
    16ca:	2019      	movs	r0, #25
    16cc:	4798      	blx	r3
    16ce:	e7fe      	b.n	16ce <ssp1_ISR+0x16>
    16d0:	00004b0b 	.word	0x00004b0b
    16d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.pll0_ISR:

000016d8 <pll0_ISR>:
    16d8:	b508      	push	{r3, lr}
    16da:	4905      	ldr	r1, [pc, #20]	; (16f0 <pll0_ISR+0x18>)
    16dc:	2002      	movs	r0, #2
    16de:	f002 f943 	bl	3968 <rprintf>
    16e2:	4b04      	ldr	r3, [pc, #16]	; (16f4 <pll0_ISR+0x1c>)
    16e4:	681a      	ldr	r2, [r3, #0]
    16e6:	b112      	cbz	r2, 16ee <pll0_ISR+0x16>
    16e8:	681b      	ldr	r3, [r3, #0]
    16ea:	201a      	movs	r0, #26
    16ec:	4798      	blx	r3
    16ee:	e7fe      	b.n	16ee <pll0_ISR+0x16>
    16f0:	00004b17 	.word	0x00004b17
    16f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.rtc_ISR:

000016f8 <rtc_ISR>:
    16f8:	b508      	push	{r3, lr}
    16fa:	4905      	ldr	r1, [pc, #20]	; (1710 <rtc_ISR+0x18>)
    16fc:	2002      	movs	r0, #2
    16fe:	f002 f933 	bl	3968 <rprintf>
    1702:	4b04      	ldr	r3, [pc, #16]	; (1714 <rtc_ISR+0x1c>)
    1704:	681a      	ldr	r2, [r3, #0]
    1706:	b112      	cbz	r2, 170e <rtc_ISR+0x16>
    1708:	681b      	ldr	r3, [r3, #0]
    170a:	201b      	movs	r0, #27
    170c:	4798      	blx	r3
    170e:	e7fe      	b.n	170e <rtc_ISR+0x16>
    1710:	00004b23 	.word	0x00004b23
    1714:	100007f8 	.word	0x100007f8

Disassembly of section .text.eint0_ISR:

00001718 <eint0_ISR>:
    1718:	b508      	push	{r3, lr}
    171a:	4905      	ldr	r1, [pc, #20]	; (1730 <eint0_ISR+0x18>)
    171c:	2002      	movs	r0, #2
    171e:	f002 f923 	bl	3968 <rprintf>
    1722:	4b04      	ldr	r3, [pc, #16]	; (1734 <eint0_ISR+0x1c>)
    1724:	681a      	ldr	r2, [r3, #0]
    1726:	b112      	cbz	r2, 172e <eint0_ISR+0x16>
    1728:	681b      	ldr	r3, [r3, #0]
    172a:	201c      	movs	r0, #28
    172c:	4798      	blx	r3
    172e:	e7fe      	b.n	172e <eint0_ISR+0x16>
    1730:	00004b2b 	.word	0x00004b2b
    1734:	100007f8 	.word	0x100007f8

Disassembly of section .text.eint1_ISR:

00001738 <eint1_ISR>:
    1738:	b508      	push	{r3, lr}
    173a:	4905      	ldr	r1, [pc, #20]	; (1750 <eint1_ISR+0x18>)
    173c:	2002      	movs	r0, #2
    173e:	f002 f913 	bl	3968 <rprintf>
    1742:	4b04      	ldr	r3, [pc, #16]	; (1754 <eint1_ISR+0x1c>)
    1744:	681a      	ldr	r2, [r3, #0]
    1746:	b112      	cbz	r2, 174e <eint1_ISR+0x16>
    1748:	681b      	ldr	r3, [r3, #0]
    174a:	201d      	movs	r0, #29
    174c:	4798      	blx	r3
    174e:	e7fe      	b.n	174e <eint1_ISR+0x16>
    1750:	00004b38 	.word	0x00004b38
    1754:	100007f8 	.word	0x100007f8

Disassembly of section .text.eint2_ISR:

00001758 <eint2_ISR>:
    1758:	b508      	push	{r3, lr}
    175a:	4905      	ldr	r1, [pc, #20]	; (1770 <eint2_ISR+0x18>)
    175c:	2002      	movs	r0, #2
    175e:	f002 f903 	bl	3968 <rprintf>
    1762:	4b04      	ldr	r3, [pc, #16]	; (1774 <eint2_ISR+0x1c>)
    1764:	681a      	ldr	r2, [r3, #0]
    1766:	b112      	cbz	r2, 176e <eint2_ISR+0x16>
    1768:	681b      	ldr	r3, [r3, #0]
    176a:	201e      	movs	r0, #30
    176c:	4798      	blx	r3
    176e:	e7fe      	b.n	176e <eint2_ISR+0x16>
    1770:	00004b45 	.word	0x00004b45
    1774:	100007f8 	.word	0x100007f8

Disassembly of section .text.eint3_ISR:

00001778 <eint3_ISR>:
    1778:	b508      	push	{r3, lr}
    177a:	4905      	ldr	r1, [pc, #20]	; (1790 <eint3_ISR+0x18>)
    177c:	2002      	movs	r0, #2
    177e:	f002 f8f3 	bl	3968 <rprintf>
    1782:	4b04      	ldr	r3, [pc, #16]	; (1794 <eint3_ISR+0x1c>)
    1784:	681a      	ldr	r2, [r3, #0]
    1786:	b112      	cbz	r2, 178e <eint3_ISR+0x16>
    1788:	681b      	ldr	r3, [r3, #0]
    178a:	201f      	movs	r0, #31
    178c:	4798      	blx	r3
    178e:	e7fe      	b.n	178e <eint3_ISR+0x16>
    1790:	00004b52 	.word	0x00004b52
    1794:	100007f8 	.word	0x100007f8

Disassembly of section .text.adc_ISR:

00001798 <adc_ISR>:
    1798:	b508      	push	{r3, lr}
    179a:	4905      	ldr	r1, [pc, #20]	; (17b0 <adc_ISR+0x18>)
    179c:	2002      	movs	r0, #2
    179e:	f002 f8e3 	bl	3968 <rprintf>
    17a2:	4b04      	ldr	r3, [pc, #16]	; (17b4 <adc_ISR+0x1c>)
    17a4:	681a      	ldr	r2, [r3, #0]
    17a6:	b112      	cbz	r2, 17ae <adc_ISR+0x16>
    17a8:	681b      	ldr	r3, [r3, #0]
    17aa:	2020      	movs	r0, #32
    17ac:	4798      	blx	r3
    17ae:	e7fe      	b.n	17ae <adc_ISR+0x16>
    17b0:	00004b5f 	.word	0x00004b5f
    17b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.bod_ISR:

000017b8 <bod_ISR>:
    17b8:	b508      	push	{r3, lr}
    17ba:	4905      	ldr	r1, [pc, #20]	; (17d0 <bod_ISR+0x18>)
    17bc:	2002      	movs	r0, #2
    17be:	f002 f8d3 	bl	3968 <rprintf>
    17c2:	4b04      	ldr	r3, [pc, #16]	; (17d4 <bod_ISR+0x1c>)
    17c4:	681a      	ldr	r2, [r3, #0]
    17c6:	b112      	cbz	r2, 17ce <bod_ISR+0x16>
    17c8:	681b      	ldr	r3, [r3, #0]
    17ca:	2021      	movs	r0, #33	; 0x21
    17cc:	4798      	blx	r3
    17ce:	e7fe      	b.n	17ce <bod_ISR+0x16>
    17d0:	00004b6a 	.word	0x00004b6a
    17d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.usbHost_ISR:

000017d8 <usbHost_ISR>:
    17d8:	b508      	push	{r3, lr}
    17da:	4905      	ldr	r1, [pc, #20]	; (17f0 <usbHost_ISR+0x18>)
    17dc:	2002      	movs	r0, #2
    17de:	f002 f8c3 	bl	3968 <rprintf>
    17e2:	4b04      	ldr	r3, [pc, #16]	; (17f4 <usbHost_ISR+0x1c>)
    17e4:	681a      	ldr	r2, [r3, #0]
    17e6:	b112      	cbz	r2, 17ee <usbHost_ISR+0x16>
    17e8:	681b      	ldr	r3, [r3, #0]
    17ea:	2022      	movs	r0, #34	; 0x22
    17ec:	4798      	blx	r3
    17ee:	e7fe      	b.n	17ee <usbHost_ISR+0x16>
    17f0:	00004b75 	.word	0x00004b75
    17f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.can_ISR:

000017f8 <can_ISR>:
    17f8:	b508      	push	{r3, lr}
    17fa:	4905      	ldr	r1, [pc, #20]	; (1810 <can_ISR+0x18>)
    17fc:	2002      	movs	r0, #2
    17fe:	f002 f8b3 	bl	3968 <rprintf>
    1802:	4b04      	ldr	r3, [pc, #16]	; (1814 <can_ISR+0x1c>)
    1804:	681a      	ldr	r2, [r3, #0]
    1806:	b112      	cbz	r2, 180e <can_ISR+0x16>
    1808:	681b      	ldr	r3, [r3, #0]
    180a:	2023      	movs	r0, #35	; 0x23
    180c:	4798      	blx	r3
    180e:	e7fe      	b.n	180e <can_ISR+0x16>
    1810:	00004b80 	.word	0x00004b80
    1814:	100007f8 	.word	0x100007f8

Disassembly of section .text.dma_ISR:

00001818 <dma_ISR>:
    1818:	b508      	push	{r3, lr}
    181a:	4905      	ldr	r1, [pc, #20]	; (1830 <dma_ISR+0x18>)
    181c:	2002      	movs	r0, #2
    181e:	f002 f8a3 	bl	3968 <rprintf>
    1822:	4b04      	ldr	r3, [pc, #16]	; (1834 <dma_ISR+0x1c>)
    1824:	681a      	ldr	r2, [r3, #0]
    1826:	b112      	cbz	r2, 182e <dma_ISR+0x16>
    1828:	681b      	ldr	r3, [r3, #0]
    182a:	2024      	movs	r0, #36	; 0x24
    182c:	4798      	blx	r3
    182e:	e7fe      	b.n	182e <dma_ISR+0x16>
    1830:	00004b8b 	.word	0x00004b8b
    1834:	100007f8 	.word	0x100007f8

Disassembly of section .text.i2s_ISR:

00001838 <i2s_ISR>:
    1838:	b508      	push	{r3, lr}
    183a:	4905      	ldr	r1, [pc, #20]	; (1850 <i2s_ISR+0x18>)
    183c:	2002      	movs	r0, #2
    183e:	f002 f893 	bl	3968 <rprintf>
    1842:	4b04      	ldr	r3, [pc, #16]	; (1854 <i2s_ISR+0x1c>)
    1844:	681a      	ldr	r2, [r3, #0]
    1846:	b112      	cbz	r2, 184e <i2s_ISR+0x16>
    1848:	681b      	ldr	r3, [r3, #0]
    184a:	2025      	movs	r0, #37	; 0x25
    184c:	4798      	blx	r3
    184e:	e7fe      	b.n	184e <i2s_ISR+0x16>
    1850:	00004b96 	.word	0x00004b96
    1854:	100007f8 	.word	0x100007f8

Disassembly of section .text.enet_ISR:

00001858 <enet_ISR>:
    1858:	b508      	push	{r3, lr}
    185a:	4905      	ldr	r1, [pc, #20]	; (1870 <enet_ISR+0x18>)
    185c:	2002      	movs	r0, #2
    185e:	f002 f883 	bl	3968 <rprintf>
    1862:	4b04      	ldr	r3, [pc, #16]	; (1874 <enet_ISR+0x1c>)
    1864:	681a      	ldr	r2, [r3, #0]
    1866:	b112      	cbz	r2, 186e <enet_ISR+0x16>
    1868:	681b      	ldr	r3, [r3, #0]
    186a:	2026      	movs	r0, #38	; 0x26
    186c:	4798      	blx	r3
    186e:	e7fe      	b.n	186e <enet_ISR+0x16>
    1870:	00004ba1 	.word	0x00004ba1
    1874:	100007f8 	.word	0x100007f8

Disassembly of section .text.rit_ISR:

00001878 <rit_ISR>:
    1878:	b508      	push	{r3, lr}
    187a:	4905      	ldr	r1, [pc, #20]	; (1890 <rit_ISR+0x18>)
    187c:	2002      	movs	r0, #2
    187e:	f002 f873 	bl	3968 <rprintf>
    1882:	4b04      	ldr	r3, [pc, #16]	; (1894 <rit_ISR+0x1c>)
    1884:	681a      	ldr	r2, [r3, #0]
    1886:	b112      	cbz	r2, 188e <rit_ISR+0x16>
    1888:	681b      	ldr	r3, [r3, #0]
    188a:	2027      	movs	r0, #39	; 0x27
    188c:	4798      	blx	r3
    188e:	e7fe      	b.n	188e <rit_ISR+0x16>
    1890:	00004bad 	.word	0x00004bad
    1894:	100007f8 	.word	0x100007f8

Disassembly of section .text.mcpwm_ISR:

00001898 <mcpwm_ISR>:
    1898:	b508      	push	{r3, lr}
    189a:	4905      	ldr	r1, [pc, #20]	; (18b0 <mcpwm_ISR+0x18>)
    189c:	2002      	movs	r0, #2
    189e:	f002 f863 	bl	3968 <rprintf>
    18a2:	4b04      	ldr	r3, [pc, #16]	; (18b4 <mcpwm_ISR+0x1c>)
    18a4:	681a      	ldr	r2, [r3, #0]
    18a6:	b112      	cbz	r2, 18ae <mcpwm_ISR+0x16>
    18a8:	681b      	ldr	r3, [r3, #0]
    18aa:	2028      	movs	r0, #40	; 0x28
    18ac:	4798      	blx	r3
    18ae:	e7fe      	b.n	18ae <mcpwm_ISR+0x16>
    18b0:	00004bb8 	.word	0x00004bb8
    18b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.qei_ISR:

000018b8 <qei_ISR>:
    18b8:	b508      	push	{r3, lr}
    18ba:	4905      	ldr	r1, [pc, #20]	; (18d0 <qei_ISR+0x18>)
    18bc:	2002      	movs	r0, #2
    18be:	f002 f853 	bl	3968 <rprintf>
    18c2:	4b04      	ldr	r3, [pc, #16]	; (18d4 <qei_ISR+0x1c>)
    18c4:	681a      	ldr	r2, [r3, #0]
    18c6:	b112      	cbz	r2, 18ce <qei_ISR+0x16>
    18c8:	681b      	ldr	r3, [r3, #0]
    18ca:	2029      	movs	r0, #41	; 0x29
    18cc:	4798      	blx	r3
    18ce:	e7fe      	b.n	18ce <qei_ISR+0x16>
    18d0:	00004bc5 	.word	0x00004bc5
    18d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.pll1_ISR:

000018d8 <pll1_ISR>:
    18d8:	b508      	push	{r3, lr}
    18da:	4905      	ldr	r1, [pc, #20]	; (18f0 <pll1_ISR+0x18>)
    18dc:	2002      	movs	r0, #2
    18de:	f002 f843 	bl	3968 <rprintf>
    18e2:	4b04      	ldr	r3, [pc, #16]	; (18f4 <pll1_ISR+0x1c>)
    18e4:	681a      	ldr	r2, [r3, #0]
    18e6:	b112      	cbz	r2, 18ee <pll1_ISR+0x16>
    18e8:	681b      	ldr	r3, [r3, #0]
    18ea:	202a      	movs	r0, #42	; 0x2a
    18ec:	4798      	blx	r3
    18ee:	e7fe      	b.n	18ee <pll1_ISR+0x16>
    18f0:	00004bd0 	.word	0x00004bd0
    18f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.usbAct_ISR:

000018f8 <usbAct_ISR>:
    18f8:	b508      	push	{r3, lr}
    18fa:	4905      	ldr	r1, [pc, #20]	; (1910 <usbAct_ISR+0x18>)
    18fc:	2002      	movs	r0, #2
    18fe:	f002 f833 	bl	3968 <rprintf>
    1902:	4b04      	ldr	r3, [pc, #16]	; (1914 <usbAct_ISR+0x1c>)
    1904:	681a      	ldr	r2, [r3, #0]
    1906:	b112      	cbz	r2, 190e <usbAct_ISR+0x16>
    1908:	681b      	ldr	r3, [r3, #0]
    190a:	202b      	movs	r0, #43	; 0x2b
    190c:	4798      	blx	r3
    190e:	e7fe      	b.n	190e <usbAct_ISR+0x16>
    1910:	00004bdc 	.word	0x00004bdc
    1914:	100007f8 	.word	0x100007f8

Disassembly of section .text.canAct_ISR:

00001918 <canAct_ISR>:
    1918:	b508      	push	{r3, lr}
    191a:	4905      	ldr	r1, [pc, #20]	; (1930 <canAct_ISR+0x18>)
    191c:	2002      	movs	r0, #2
    191e:	f002 f823 	bl	3968 <rprintf>
    1922:	4b04      	ldr	r3, [pc, #16]	; (1934 <canAct_ISR+0x1c>)
    1924:	681a      	ldr	r2, [r3, #0]
    1926:	b112      	cbz	r2, 192e <canAct_ISR+0x16>
    1928:	681b      	ldr	r3, [r3, #0]
    192a:	202c      	movs	r0, #44	; 0x2c
    192c:	4798      	blx	r3
    192e:	e7fe      	b.n	192e <canAct_ISR+0x16>
    1930:	00004beb 	.word	0x00004beb
    1934:	100007f8 	.word	0x100007f8

Disassembly of section .text.uart4_ISR:

00001938 <uart4_ISR>:
    1938:	b508      	push	{r3, lr}
    193a:	4905      	ldr	r1, [pc, #20]	; (1950 <uart4_ISR+0x18>)
    193c:	2002      	movs	r0, #2
    193e:	f002 f813 	bl	3968 <rprintf>
    1942:	4b04      	ldr	r3, [pc, #16]	; (1954 <uart4_ISR+0x1c>)
    1944:	681a      	ldr	r2, [r3, #0]
    1946:	b112      	cbz	r2, 194e <uart4_ISR+0x16>
    1948:	681b      	ldr	r3, [r3, #0]
    194a:	202d      	movs	r0, #45	; 0x2d
    194c:	4798      	blx	r3
    194e:	e7fe      	b.n	194e <uart4_ISR+0x16>
    1950:	00004bfa 	.word	0x00004bfa
    1954:	100007f8 	.word	0x100007f8

Disassembly of section .text.ssp2_ISR:

00001958 <ssp2_ISR>:
    1958:	b508      	push	{r3, lr}
    195a:	4905      	ldr	r1, [pc, #20]	; (1970 <ssp2_ISR+0x18>)
    195c:	2002      	movs	r0, #2
    195e:	f002 f803 	bl	3968 <rprintf>
    1962:	4b04      	ldr	r3, [pc, #16]	; (1974 <ssp2_ISR+0x1c>)
    1964:	681a      	ldr	r2, [r3, #0]
    1966:	b112      	cbz	r2, 196e <ssp2_ISR+0x16>
    1968:	681b      	ldr	r3, [r3, #0]
    196a:	202e      	movs	r0, #46	; 0x2e
    196c:	4798      	blx	r3
    196e:	e7fe      	b.n	196e <ssp2_ISR+0x16>
    1970:	00004c07 	.word	0x00004c07
    1974:	100007f8 	.word	0x100007f8

Disassembly of section .text.lcd_ISR:

00001978 <lcd_ISR>:
    1978:	b508      	push	{r3, lr}
    197a:	4905      	ldr	r1, [pc, #20]	; (1990 <lcd_ISR+0x18>)
    197c:	2002      	movs	r0, #2
    197e:	f001 fff3 	bl	3968 <rprintf>
    1982:	4b04      	ldr	r3, [pc, #16]	; (1994 <lcd_ISR+0x1c>)
    1984:	681a      	ldr	r2, [r3, #0]
    1986:	b112      	cbz	r2, 198e <lcd_ISR+0x16>
    1988:	681b      	ldr	r3, [r3, #0]
    198a:	202f      	movs	r0, #47	; 0x2f
    198c:	4798      	blx	r3
    198e:	e7fe      	b.n	198e <lcd_ISR+0x16>
    1990:	00004c13 	.word	0x00004c13
    1994:	100007f8 	.word	0x100007f8

Disassembly of section .text.gpio_ISR:

00001998 <gpio_ISR>:
    1998:	b508      	push	{r3, lr}
    199a:	4905      	ldr	r1, [pc, #20]	; (19b0 <gpio_ISR+0x18>)
    199c:	2002      	movs	r0, #2
    199e:	f001 ffe3 	bl	3968 <rprintf>
    19a2:	4b04      	ldr	r3, [pc, #16]	; (19b4 <gpio_ISR+0x1c>)
    19a4:	681a      	ldr	r2, [r3, #0]
    19a6:	b112      	cbz	r2, 19ae <gpio_ISR+0x16>
    19a8:	681b      	ldr	r3, [r3, #0]
    19aa:	2030      	movs	r0, #48	; 0x30
    19ac:	4798      	blx	r3
    19ae:	e7fe      	b.n	19ae <gpio_ISR+0x16>
    19b0:	00004c1e 	.word	0x00004c1e
    19b4:	100007f8 	.word	0x100007f8

Disassembly of section .text.pwm0_ISR:

000019b8 <pwm0_ISR>:
    19b8:	b508      	push	{r3, lr}
    19ba:	4905      	ldr	r1, [pc, #20]	; (19d0 <pwm0_ISR+0x18>)
    19bc:	2002      	movs	r0, #2
    19be:	f001 ffd3 	bl	3968 <rprintf>
    19c2:	4b04      	ldr	r3, [pc, #16]	; (19d4 <pwm0_ISR+0x1c>)
    19c4:	681a      	ldr	r2, [r3, #0]
    19c6:	b112      	cbz	r2, 19ce <pwm0_ISR+0x16>
    19c8:	681b      	ldr	r3, [r3, #0]
    19ca:	2031      	movs	r0, #49	; 0x31
    19cc:	4798      	blx	r3
    19ce:	e7fe      	b.n	19ce <pwm0_ISR+0x16>
    19d0:	00004c2a 	.word	0x00004c2a
    19d4:	100007f8 	.word	0x100007f8

Disassembly of section .text.eeprom_ISR:

000019d8 <eeprom_ISR>:
    19d8:	b508      	push	{r3, lr}
    19da:	4905      	ldr	r1, [pc, #20]	; (19f0 <eeprom_ISR+0x18>)
    19dc:	2002      	movs	r0, #2
    19de:	f001 ffc3 	bl	3968 <rprintf>
    19e2:	4b04      	ldr	r3, [pc, #16]	; (19f4 <eeprom_ISR+0x1c>)
    19e4:	681a      	ldr	r2, [r3, #0]
    19e6:	b112      	cbz	r2, 19ee <eeprom_ISR+0x16>
    19e8:	681b      	ldr	r3, [r3, #0]
    19ea:	2032      	movs	r0, #50	; 0x32
    19ec:	4798      	blx	r3
    19ee:	e7fe      	b.n	19ee <eeprom_ISR+0x16>
    19f0:	00004c36 	.word	0x00004c36
    19f4:	100007f8 	.word	0x100007f8

Disassembly of section .text.nvic_setPendingIRQ:

000019f8 <nvic_setPendingIRQ>:
    19f8:	0943      	lsrs	r3, r0, #5
    19fa:	009b      	lsls	r3, r3, #2
    19fc:	f103 4360 	add.w	r3, r3, #3758096384	; 0xe0000000
    1a00:	f000 001f 	and.w	r0, r0, #31
    1a04:	2201      	movs	r2, #1
    1a06:	f503 4361 	add.w	r3, r3, #57600	; 0xe100
    1a0a:	fa02 f000 	lsl.w	r0, r2, r0
    1a0e:	6018      	str	r0, [r3, #0]
    1a10:	4770      	bx	lr

Disassembly of section .text.nvic_enableIRQ:

00001a12 <nvic_enableIRQ>:
    1a12:	f7ff bff1 	b.w	19f8 <nvic_setPendingIRQ>

Disassembly of section .text.nvic_clearPendingIRQ:

00001a18 <nvic_clearPendingIRQ>:
    1a18:	0942      	lsrs	r2, r0, #5
    1a1a:	2301      	movs	r3, #1
    1a1c:	f000 001f 	and.w	r0, r0, #31
    1a20:	fa03 f000 	lsl.w	r0, r3, r0
    1a24:	4b01      	ldr	r3, [pc, #4]	; (1a2c <nvic_clearPendingIRQ+0x14>)
    1a26:	f843 0022 	str.w	r0, [r3, r2, lsl #2]
    1a2a:	4770      	bx	lr
    1a2c:	e000e280 	.word	0xe000e280

Disassembly of section .text.nvic_setPriority:

00001a30 <nvic_setPriority>:
    1a30:	2800      	cmp	r0, #0
    1a32:	b2c3      	uxtb	r3, r0
    1a34:	ea4f 01c1 	mov.w	r1, r1, lsl #3
    1a38:	da0d      	bge.n	1a56 <nvic_setPriority+0x26>
    1a3a:	f000 000f 	and.w	r0, r0, #15
    1a3e:	2204      	movs	r2, #4
    1a40:	3804      	subs	r0, #4
    1a42:	fb90 f0f2 	sdiv	r0, r0, r2
    1a46:	f003 0303 	and.w	r3, r3, #3
    1a4a:	4a09      	ldr	r2, [pc, #36]	; (1a70 <nvic_setPriority+0x40>)
    1a4c:	eb03 0380 	add.w	r3, r3, r0, lsl #2
    1a50:	b2c9      	uxtb	r1, r1
    1a52:	5499      	strb	r1, [r3, r2]
    1a54:	4770      	bx	lr
    1a56:	f020 0003 	bic.w	r0, r0, #3
    1a5a:	f003 0303 	and.w	r3, r3, #3
    1a5e:	4418      	add	r0, r3
    1a60:	f100 4060 	add.w	r0, r0, #3758096384	; 0xe0000000
    1a64:	f500 4064 	add.w	r0, r0, #58368	; 0xe400
    1a68:	b2c9      	uxtb	r1, r1
    1a6a:	7001      	strb	r1, [r0, #0]
    1a6c:	4770      	bx	lr
    1a6e:	bf00      	nop
    1a70:	e000ed18 	.word	0xe000ed18

Disassembly of section .text.nvic_SetIntHandler:

00001a74 <nvic_SetIntHandler>:
    1a74:	4b01      	ldr	r3, [pc, #4]	; (1a7c <nvic_SetIntHandler+0x8>)
    1a76:	6018      	str	r0, [r3, #0]
    1a78:	4770      	bx	lr
    1a7a:	bf00      	nop
    1a7c:	100007f8 	.word	0x100007f8

Disassembly of section .text.iap_Call:

00001a80 <iap_Call>:
    1a80:	b508      	push	{r3, lr}
    1a82:	b672      	cpsid	i
    1a84:	4902      	ldr	r1, [pc, #8]	; (1a90 <iap_Call+0x10>)
    1a86:	4803      	ldr	r0, [pc, #12]	; (1a94 <iap_Call+0x14>)
    1a88:	4b03      	ldr	r3, [pc, #12]	; (1a98 <iap_Call+0x18>)
    1a8a:	4798      	blx	r3
    1a8c:	b662      	cpsie	i
    1a8e:	bd08      	pop	{r3, pc}
    1a90:	100007fc 	.word	0x100007fc
    1a94:	10000808 	.word	0x10000808
    1a98:	1fff1ff1 	.word	0x1fff1ff1

Disassembly of section .text.iap_PrepareSectors:

00001a9c <iap_PrepareSectors>:
    1a9c:	b508      	push	{r3, lr}
    1a9e:	4b0a      	ldr	r3, [pc, #40]	; (1ac8 <iap_PrepareSectors+0x2c>)
    1aa0:	2232      	movs	r2, #50	; 0x32
    1aa2:	601a      	str	r2, [r3, #0]
    1aa4:	6058      	str	r0, [r3, #4]
    1aa6:	6099      	str	r1, [r3, #8]
    1aa8:	f7ff ffea 	bl	1a80 <iap_Call>
    1aac:	4b07      	ldr	r3, [pc, #28]	; (1acc <iap_PrepareSectors+0x30>)
    1aae:	681b      	ldr	r3, [r3, #0]
    1ab0:	2b0b      	cmp	r3, #11
    1ab2:	d005      	beq.n	1ac0 <iap_PrepareSectors+0x24>
    1ab4:	2b07      	cmp	r3, #7
    1ab6:	bf0c      	ite	eq
    1ab8:	f06f 0059 	mvneq.w	r0, #89	; 0x59
    1abc:	2001      	movne	r0, #1
    1abe:	bd08      	pop	{r3, pc}
    1ac0:	f06f 0066 	mvn.w	r0, #102	; 0x66
    1ac4:	bd08      	pop	{r3, pc}
    1ac6:	bf00      	nop
    1ac8:	10000808 	.word	0x10000808
    1acc:	100007fc 	.word	0x100007fc

Disassembly of section .text.iap_CopyRAMtoFLASH:

00001ad0 <iap_CopyRAMtoFLASH>:
    1ad0:	4b18      	ldr	r3, [pc, #96]	; (1b34 <iap_CopyRAMtoFLASH+0x64>)
    1ad2:	b510      	push	{r4, lr}
    1ad4:	60da      	str	r2, [r3, #12]
    1ad6:	4a18      	ldr	r2, [pc, #96]	; (1b38 <iap_CopyRAMtoFLASH+0x68>)
    1ad8:	2433      	movs	r4, #51	; 0x33
    1ada:	601c      	str	r4, [r3, #0]
    1adc:	6058      	str	r0, [r3, #4]
    1ade:	6099      	str	r1, [r3, #8]
    1ae0:	611a      	str	r2, [r3, #16]
    1ae2:	f7ff ffcd 	bl	1a80 <iap_Call>
    1ae6:	4b15      	ldr	r3, [pc, #84]	; (1b3c <iap_CopyRAMtoFLASH+0x6c>)
    1ae8:	681b      	ldr	r3, [r3, #0]
    1aea:	2b0b      	cmp	r3, #11
    1aec:	d00f      	beq.n	1b0e <iap_CopyRAMtoFLASH+0x3e>
    1aee:	2b09      	cmp	r3, #9
    1af0:	d010      	beq.n	1b14 <iap_CopyRAMtoFLASH+0x44>
    1af2:	2b02      	cmp	r3, #2
    1af4:	d011      	beq.n	1b1a <iap_CopyRAMtoFLASH+0x4a>
    1af6:	2b03      	cmp	r3, #3
    1af8:	d012      	beq.n	1b20 <iap_CopyRAMtoFLASH+0x50>
    1afa:	2b04      	cmp	r3, #4
    1afc:	d013      	beq.n	1b26 <iap_CopyRAMtoFLASH+0x56>
    1afe:	2b05      	cmp	r3, #5
    1b00:	d014      	beq.n	1b2c <iap_CopyRAMtoFLASH+0x5c>
    1b02:	2b06      	cmp	r3, #6
    1b04:	bf0c      	ite	eq
    1b06:	f06f 0062 	mvneq.w	r0, #98	; 0x62
    1b0a:	2001      	movne	r0, #1
    1b0c:	bd10      	pop	{r4, pc}
    1b0e:	f06f 0066 	mvn.w	r0, #102	; 0x66
    1b12:	bd10      	pop	{r4, pc}
    1b14:	f06f 0064 	mvn.w	r0, #100	; 0x64
    1b18:	bd10      	pop	{r4, pc}
    1b1a:	f06f 005e 	mvn.w	r0, #94	; 0x5e
    1b1e:	bd10      	pop	{r4, pc}
    1b20:	f06f 005f 	mvn.w	r0, #95	; 0x5f
    1b24:	bd10      	pop	{r4, pc}
    1b26:	f06f 0060 	mvn.w	r0, #96	; 0x60
    1b2a:	bd10      	pop	{r4, pc}
    1b2c:	f06f 0061 	mvn.w	r0, #97	; 0x61
    1b30:	bd10      	pop	{r4, pc}
    1b32:	bf00      	nop
    1b34:	10000808 	.word	0x10000808
    1b38:	000186a0 	.word	0x000186a0
    1b3c:	100007fc 	.word	0x100007fc

Disassembly of section .text.iap_EraseSectors:

00001b40 <iap_EraseSectors>:
    1b40:	4281      	cmp	r1, r0
    1b42:	b508      	push	{r3, lr}
    1b44:	d314      	bcc.n	1b70 <iap_EraseSectors+0x30>
    1b46:	4b0f      	ldr	r3, [pc, #60]	; (1b84 <iap_EraseSectors+0x44>)
    1b48:	2234      	movs	r2, #52	; 0x34
    1b4a:	601a      	str	r2, [r3, #0]
    1b4c:	4a0e      	ldr	r2, [pc, #56]	; (1b88 <iap_EraseSectors+0x48>)
    1b4e:	6058      	str	r0, [r3, #4]
    1b50:	6099      	str	r1, [r3, #8]
    1b52:	60da      	str	r2, [r3, #12]
    1b54:	f7ff ff94 	bl	1a80 <iap_Call>
    1b58:	4b0c      	ldr	r3, [pc, #48]	; (1b8c <iap_EraseSectors+0x4c>)
    1b5a:	681b      	ldr	r3, [r3, #0]
    1b5c:	2b0b      	cmp	r3, #11
    1b5e:	d00a      	beq.n	1b76 <iap_EraseSectors+0x36>
    1b60:	2b09      	cmp	r3, #9
    1b62:	d00b      	beq.n	1b7c <iap_EraseSectors+0x3c>
    1b64:	2b07      	cmp	r3, #7
    1b66:	bf0c      	ite	eq
    1b68:	f06f 0059 	mvneq.w	r0, #89	; 0x59
    1b6c:	2001      	movne	r0, #1
    1b6e:	bd08      	pop	{r3, pc}
    1b70:	f06f 0069 	mvn.w	r0, #105	; 0x69
    1b74:	bd08      	pop	{r3, pc}
    1b76:	f06f 0066 	mvn.w	r0, #102	; 0x66
    1b7a:	bd08      	pop	{r3, pc}
    1b7c:	f06f 0064 	mvn.w	r0, #100	; 0x64
    1b80:	bd08      	pop	{r3, pc}
    1b82:	bf00      	nop
    1b84:	10000808 	.word	0x10000808
    1b88:	000186a0 	.word	0x000186a0
    1b8c:	100007fc 	.word	0x100007fc

Disassembly of section .text.iap_ClearSectors:

00001b90 <iap_ClearSectors>:
    1b90:	b538      	push	{r3, r4, r5, lr}
    1b92:	4604      	mov	r4, r0
    1b94:	460d      	mov	r5, r1
    1b96:	b672      	cpsid	i
    1b98:	f7ff ff80 	bl	1a9c <iap_PrepareSectors>
    1b9c:	2801      	cmp	r0, #1
    1b9e:	d103      	bne.n	1ba8 <iap_ClearSectors+0x18>
    1ba0:	4629      	mov	r1, r5
    1ba2:	4620      	mov	r0, r4
    1ba4:	f7ff ffcc 	bl	1b40 <iap_EraseSectors>
    1ba8:	b662      	cpsie	i
    1baa:	bd38      	pop	{r3, r4, r5, pc}

Disassembly of section .text.iap_Compare:

00001bac <iap_Compare>:
    1bac:	4b14      	ldr	r3, [pc, #80]	; (1c00 <iap_Compare+0x54>)
    1bae:	b510      	push	{r4, lr}
    1bb0:	2438      	movs	r4, #56	; 0x38
    1bb2:	601c      	str	r4, [r3, #0]
    1bb4:	6058      	str	r0, [r3, #4]
    1bb6:	6099      	str	r1, [r3, #8]
    1bb8:	60da      	str	r2, [r3, #12]
    1bba:	f7ff ff61 	bl	1a80 <iap_Call>
    1bbe:	4b11      	ldr	r3, [pc, #68]	; (1c04 <iap_Compare+0x58>)
    1bc0:	681b      	ldr	r3, [r3, #0]
    1bc2:	2b0a      	cmp	r3, #10
    1bc4:	d00d      	beq.n	1be2 <iap_Compare+0x36>
    1bc6:	2b06      	cmp	r3, #6
    1bc8:	d00e      	beq.n	1be8 <iap_Compare+0x3c>
    1bca:	2b02      	cmp	r3, #2
    1bcc:	d00f      	beq.n	1bee <iap_Compare+0x42>
    1bce:	2b03      	cmp	r3, #3
    1bd0:	d010      	beq.n	1bf4 <iap_Compare+0x48>
    1bd2:	2b04      	cmp	r3, #4
    1bd4:	d011      	beq.n	1bfa <iap_Compare+0x4e>
    1bd6:	2b05      	cmp	r3, #5
    1bd8:	bf0c      	ite	eq
    1bda:	f06f 0061 	mvneq.w	r0, #97	; 0x61
    1bde:	2001      	movne	r0, #1
    1be0:	bd10      	pop	{r4, pc}
    1be2:	f06f 0065 	mvn.w	r0, #101	; 0x65
    1be6:	bd10      	pop	{r4, pc}
    1be8:	f06f 0062 	mvn.w	r0, #98	; 0x62
    1bec:	bd10      	pop	{r4, pc}
    1bee:	f06f 005e 	mvn.w	r0, #94	; 0x5e
    1bf2:	bd10      	pop	{r4, pc}
    1bf4:	f06f 005f 	mvn.w	r0, #95	; 0x5f
    1bf8:	bd10      	pop	{r4, pc}
    1bfa:	f06f 0060 	mvn.w	r0, #96	; 0x60
    1bfe:	bd10      	pop	{r4, pc}
    1c00:	10000808 	.word	0x10000808
    1c04:	100007fc 	.word	0x100007fc

Disassembly of section .text.iap_AddressToSector:

00001c08 <iap_AddressToSector>:
    1c08:	b530      	push	{r4, r5, lr}
    1c0a:	4c09      	ldr	r4, [pc, #36]	; (1c30 <iap_AddressToSector+0x28>)
    1c0c:	2300      	movs	r3, #0
    1c0e:	eb04 02c3 	add.w	r2, r4, r3, lsl #3
    1c12:	8895      	ldrh	r5, [r2, #4]
    1c14:	f854 2033 	ldr.w	r2, [r4, r3, lsl #3]
    1c18:	442a      	add	r2, r5
    1c1a:	4282      	cmp	r2, r0
    1c1c:	d902      	bls.n	1c24 <iap_AddressToSector+0x1c>
    1c1e:	600b      	str	r3, [r1, #0]
    1c20:	2001      	movs	r0, #1
    1c22:	bd30      	pop	{r4, r5, pc}
    1c24:	3301      	adds	r3, #1
    1c26:	2b10      	cmp	r3, #16
    1c28:	d1f1      	bne.n	1c0e <iap_AddressToSector+0x6>
    1c2a:	f06f 0059 	mvn.w	r0, #89	; 0x59
    1c2e:	bd30      	pop	{r4, r5, pc}
    1c30:	10000000 	.word	0x10000000

Disassembly of section .text.iap_WriteSectors:

00001c34 <iap_WriteSectors>:
    1c34:	f5b2 7f80 	cmp.w	r2, #256	; 0x100
    1c38:	b573      	push	{r0, r1, r4, r5, r6, lr}
    1c3a:	4605      	mov	r5, r0
    1c3c:	460e      	mov	r6, r1
    1c3e:	4614      	mov	r4, r2
    1c40:	d008      	beq.n	1c54 <iap_WriteSectors+0x20>
    1c42:	f5b2 7f00 	cmp.w	r2, #512	; 0x200
    1c46:	d005      	beq.n	1c54 <iap_WriteSectors+0x20>
    1c48:	f5b2 6f80 	cmp.w	r2, #1024	; 0x400
    1c4c:	d002      	beq.n	1c54 <iap_WriteSectors+0x20>
    1c4e:	f5b2 5f80 	cmp.w	r2, #4096	; 0x1000
    1c52:	d11a      	bne.n	1c8a <iap_WriteSectors+0x56>
    1c54:	a901      	add	r1, sp, #4
    1c56:	4628      	mov	r0, r5
    1c58:	f7ff ffd6 	bl	1c08 <iap_AddressToSector>
    1c5c:	2801      	cmp	r0, #1
    1c5e:	d116      	bne.n	1c8e <iap_WriteSectors+0x5a>
    1c60:	b672      	cpsid	i
    1c62:	9901      	ldr	r1, [sp, #4]
    1c64:	4608      	mov	r0, r1
    1c66:	f7ff ff19 	bl	1a9c <iap_PrepareSectors>
    1c6a:	2801      	cmp	r0, #1
    1c6c:	d10b      	bne.n	1c86 <iap_WriteSectors+0x52>
    1c6e:	4622      	mov	r2, r4
    1c70:	4631      	mov	r1, r6
    1c72:	4628      	mov	r0, r5
    1c74:	f7ff ff2c 	bl	1ad0 <iap_CopyRAMtoFLASH>
    1c78:	2801      	cmp	r0, #1
    1c7a:	d104      	bne.n	1c86 <iap_WriteSectors+0x52>
    1c7c:	4622      	mov	r2, r4
    1c7e:	4631      	mov	r1, r6
    1c80:	4628      	mov	r0, r5
    1c82:	f7ff ff93 	bl	1bac <iap_Compare>
    1c86:	b662      	cpsie	i
    1c88:	e001      	b.n	1c8e <iap_WriteSectors+0x5a>
    1c8a:	f06f 0068 	mvn.w	r0, #104	; 0x68
    1c8e:	b002      	add	sp, #8
    1c90:	bd70      	pop	{r4, r5, r6, pc}

Disassembly of section .text.systime_Init:

00001c94 <systime_Init>:
    1c94:	4a10      	ldr	r2, [pc, #64]	; (1cd8 <systime_Init+0x44>)
    1c96:	2001      	movs	r0, #1
    1c98:	6813      	ldr	r3, [r2, #0]
    1c9a:	f043 5380 	orr.w	r3, r3, #268435456	; 0x10000000
    1c9e:	6013      	str	r3, [r2, #0]
    1ca0:	4b0e      	ldr	r3, [pc, #56]	; (1cdc <systime_Init+0x48>)
    1ca2:	2200      	movs	r2, #0
    1ca4:	601a      	str	r2, [r3, #0]
    1ca6:	4b0e      	ldr	r3, [pc, #56]	; (1ce0 <systime_Init+0x4c>)
    1ca8:	6819      	ldr	r1, [r3, #0]
    1caa:	f6a3 530c 	subw	r3, r3, #3340	; 0xd0c
    1cae:	f441 0178 	orr.w	r1, r1, #16252928	; 0xf80000
    1cb2:	f8c3 1d0c 	str.w	r1, [r3, #3340]	; 0xd0c
    1cb6:	f8d3 1d0c 	ldr.w	r1, [r3, #3340]	; 0xd0c
    1cba:	f041 4178 	orr.w	r1, r1, #4160749568	; 0xf8000000
    1cbe:	f8c3 1d0c 	str.w	r1, [r3, #3340]	; 0xd0c
    1cc2:	4908      	ldr	r1, [pc, #32]	; (1ce4 <systime_Init+0x50>)
    1cc4:	6019      	str	r1, [r3, #0]
    1cc6:	2107      	movs	r1, #7
    1cc8:	f843 1c04 	str.w	r1, [r3, #-4]
    1ccc:	4b06      	ldr	r3, [pc, #24]	; (1ce8 <systime_Init+0x54>)
    1cce:	601a      	str	r2, [r3, #0]
    1cd0:	4b06      	ldr	r3, [pc, #24]	; (1cec <systime_Init+0x58>)
    1cd2:	601a      	str	r2, [r3, #0]
    1cd4:	4770      	bx	lr
    1cd6:	bf00      	nop
    1cd8:	2009c080 	.word	0x2009c080
    1cdc:	1000081c 	.word	0x1000081c
    1ce0:	e000ed20 	.word	0xe000ed20
    1ce4:	0001869f 	.word	0x0001869f
    1ce8:	10000828 	.word	0x10000828
    1cec:	10000820 	.word	0x10000820

Disassembly of section .text.systime_SetIntHandler:

00001cf0 <systime_SetIntHandler>:
    1cf0:	4b02      	ldr	r3, [pc, #8]	; (1cfc <systime_SetIntHandler+0xc>)
    1cf2:	b109      	cbz	r1, 1cf8 <systime_SetIntHandler+0x8>
    1cf4:	6018      	str	r0, [r3, #0]
    1cf6:	4b02      	ldr	r3, [pc, #8]	; (1d00 <systime_SetIntHandler+0x10>)
    1cf8:	6019      	str	r1, [r3, #0]
    1cfa:	4770      	bx	lr
    1cfc:	10000828 	.word	0x10000828
    1d00:	10000824 	.word	0x10000824

Disassembly of section .text.sysTick_ISR:

00001d04 <sysTick_ISR>:
    1d04:	b508      	push	{r3, lr}
    1d06:	4b12      	ldr	r3, [pc, #72]	; (1d50 <sysTick_ISR+0x4c>)
    1d08:	4912      	ldr	r1, [pc, #72]	; (1d54 <sysTick_ISR+0x50>)
    1d0a:	681a      	ldr	r2, [r3, #0]
    1d0c:	3201      	adds	r2, #1
    1d0e:	601a      	str	r2, [r3, #0]
    1d10:	680a      	ldr	r2, [r1, #0]
    1d12:	b14a      	cbz	r2, 1d28 <sysTick_ISR+0x24>
    1d14:	6818      	ldr	r0, [r3, #0]
    1d16:	4b10      	ldr	r3, [pc, #64]	; (1d58 <sysTick_ISR+0x54>)
    1d18:	681b      	ldr	r3, [r3, #0]
    1d1a:	fbb0 f2f3 	udiv	r2, r0, r3
    1d1e:	fb03 0312 	mls	r3, r3, r2, r0
    1d22:	b90b      	cbnz	r3, 1d28 <sysTick_ISR+0x24>
    1d24:	680b      	ldr	r3, [r1, #0]
    1d26:	4798      	blx	r3
    1d28:	4b0c      	ldr	r3, [pc, #48]	; (1d5c <sysTick_ISR+0x58>)
    1d2a:	681a      	ldr	r2, [r3, #0]
    1d2c:	f5b2 7f7a 	cmp.w	r2, #1000	; 0x3e8
    1d30:	bf24      	itt	cs
    1d32:	2200      	movcs	r2, #0
    1d34:	601a      	strcs	r2, [r3, #0]
    1d36:	681a      	ldr	r2, [r3, #0]
    1d38:	3201      	adds	r2, #1
    1d3a:	601a      	str	r2, [r3, #0]
    1d3c:	681b      	ldr	r3, [r3, #0]
    1d3e:	f5b3 7f61 	cmp.w	r3, #900	; 0x384
    1d42:	bf8c      	ite	hi
    1d44:	4a06      	ldrhi	r2, [pc, #24]	; (1d60 <sysTick_ISR+0x5c>)
    1d46:	4a07      	ldrls	r2, [pc, #28]	; (1d64 <sysTick_ISR+0x60>)
    1d48:	f04f 5380 	mov.w	r3, #268435456	; 0x10000000
    1d4c:	6013      	str	r3, [r2, #0]
    1d4e:	bd08      	pop	{r3, pc}
    1d50:	10000820 	.word	0x10000820
    1d54:	10000828 	.word	0x10000828
    1d58:	10000824 	.word	0x10000824
    1d5c:	1000081c 	.word	0x1000081c
    1d60:	2009c098 	.word	0x2009c098
    1d64:	2009c09c 	.word	0x2009c09c

Disassembly of section .text.delay:

00001d68 <delay>:
    1d68:	3801      	subs	r0, #1
    1d6a:	d1fd      	bne.n	1d68 <delay>
    1d6c:	4770      	bx	lr

Disassembly of section .text.uart0_SetBaudrate:

00001d70 <uart0_SetBaudrate>:
    1d70:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
    1d74:	4680      	mov	r8, r0
    1d76:	4e34      	ldr	r6, [pc, #208]	; (1e48 <uart0_SetBaudrate+0xd8>)
    1d78:	4834      	ldr	r0, [pc, #208]	; (1e4c <uart0_SetBaudrate+0xdc>)
    1d7a:	2380      	movs	r3, #128	; 0x80
    1d7c:	6033      	str	r3, [r6, #0]
    1d7e:	fb90 f0f8 	sdiv	r0, r0, r8
    1d82:	f7fe fc0d 	bl	5a0 <__aeabi_i2d>
    1d86:	a32c      	add	r3, pc, #176	; (adr r3, 1e38 <uart0_SetBaudrate+0xc8>)
    1d88:	e9d3 2300 	ldrd	r2, r3, [r3]
    1d8c:	f7fe fc6e 	bl	66c <__aeabi_dmul>
    1d90:	f7fe ff06 	bl	ba0 <__aeabi_d2iz>
    1d94:	46c2      	mov	sl, r8
    1d96:	4607      	mov	r7, r0
    1d98:	4b2d      	ldr	r3, [pc, #180]	; (1e50 <uart0_SetBaudrate+0xe0>)
    1d9a:	b2c2      	uxtb	r2, r0
    1d9c:	601a      	str	r2, [r3, #0]
    1d9e:	0a02      	lsrs	r2, r0, #8
    1da0:	605a      	str	r2, [r3, #4]
    1da2:	f04f 0910 	mov.w	r9, #16
    1da6:	2401      	movs	r4, #1
    1da8:	ea4f 1b04 	mov.w	fp, r4, lsl #4
    1dac:	2500      	movs	r5, #0
    1dae:	4628      	mov	r0, r5
    1db0:	f7fe ffd8 	bl	d64 <__aeabi_i2f>
    1db4:	9001      	str	r0, [sp, #4]
    1db6:	4620      	mov	r0, r4
    1db8:	f7fe ffd4 	bl	d64 <__aeabi_i2f>
    1dbc:	9b01      	ldr	r3, [sp, #4]
    1dbe:	4601      	mov	r1, r0
    1dc0:	4618      	mov	r0, r3
    1dc2:	f7ff f8d7 	bl	f74 <__aeabi_fdiv>
    1dc6:	f04f 517e 	mov.w	r1, #1065353216	; 0x3f800000
    1dca:	f7fe ff17 	bl	bfc <__addsf3>
    1dce:	9001      	str	r0, [sp, #4]
    1dd0:	4638      	mov	r0, r7
    1dd2:	f7fe ffc7 	bl	d64 <__aeabi_i2f>
    1dd6:	9b01      	ldr	r3, [sp, #4]
    1dd8:	4601      	mov	r1, r0
    1dda:	4618      	mov	r0, r3
    1ddc:	f7ff f816 	bl	e0c <__aeabi_fmul>
    1de0:	f7fe fbf0 	bl	5c4 <__aeabi_f2d>
    1de4:	2200      	movs	r2, #0
    1de6:	4b1b      	ldr	r3, [pc, #108]	; (1e54 <uart0_SetBaudrate+0xe4>)
    1de8:	f7fe fc40 	bl	66c <__aeabi_dmul>
    1dec:	4602      	mov	r2, r0
    1dee:	460b      	mov	r3, r1
    1df0:	a113      	add	r1, pc, #76	; (adr r1, 1e40 <uart0_SetBaudrate+0xd0>)
    1df2:	e9d1 0100 	ldrd	r0, r1, [r1]
    1df6:	f7fe fd63 	bl	8c0 <__aeabi_ddiv>
    1dfa:	f7fe fed1 	bl	ba0 <__aeabi_d2iz>
    1dfe:	ebc0 0008 	rsb	r0, r0, r8
    1e02:	2800      	cmp	r0, #0
    1e04:	bfb8      	it	lt
    1e06:	4240      	neglt	r0, r0
    1e08:	4550      	cmp	r0, sl
    1e0a:	bfb8      	it	lt
    1e0c:	eb05 090b 	addlt.w	r9, r5, fp
    1e10:	f105 0501 	add.w	r5, r5, #1
    1e14:	bfb8      	it	lt
    1e16:	4682      	movlt	sl, r0
    1e18:	42ac      	cmp	r4, r5
    1e1a:	d1c8      	bne.n	1dae <uart0_SetBaudrate+0x3e>
    1e1c:	3401      	adds	r4, #1
    1e1e:	2c10      	cmp	r4, #16
    1e20:	d1c2      	bne.n	1da8 <uart0_SetBaudrate+0x38>
    1e22:	4b0d      	ldr	r3, [pc, #52]	; (1e58 <uart0_SetBaudrate+0xe8>)
    1e24:	f8c3 9000 	str.w	r9, [r3]
    1e28:	2303      	movs	r3, #3
    1e2a:	6033      	str	r3, [r6, #0]
    1e2c:	b003      	add	sp, #12
    1e2e:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
    1e32:	bf00      	nop
    1e34:	f3af 8000 	nop.w
    1e38:	9999999a 	.word	0x9999999a
    1e3c:	3fe99999 	.word	0x3fe99999
    1e40:	00000000 	.word	0x00000000
    1e44:	4177d784 	.word	0x4177d784
    1e48:	4000c00c 	.word	0x4000c00c
    1e4c:	0017d784 	.word	0x0017d784
    1e50:	4000c000 	.word	0x4000c000
    1e54:	40300000 	.word	0x40300000
    1e58:	4000c028 	.word	0x4000c028

Disassembly of section .text.uart0_Init:

00001e5c <uart0_Init>:
    1e5c:	4a1d      	ldr	r2, [pc, #116]	; (1ed4 <uart0_Init+0x78>)
    1e5e:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
    1e60:	6813      	ldr	r3, [r2, #0]
    1e62:	4c1d      	ldr	r4, [pc, #116]	; (1ed8 <uart0_Init+0x7c>)
    1e64:	f043 0308 	orr.w	r3, r3, #8
    1e68:	6013      	str	r3, [r2, #0]
    1e6a:	4a1c      	ldr	r2, [pc, #112]	; (1edc <uart0_Init+0x80>)
    1e6c:	4d1c      	ldr	r5, [pc, #112]	; (1ee0 <uart0_Init+0x84>)
    1e6e:	6813      	ldr	r3, [r2, #0]
    1e70:	2600      	movs	r6, #0
    1e72:	f043 0350 	orr.w	r3, r3, #80	; 0x50
    1e76:	6013      	str	r3, [r2, #0]
    1e78:	6026      	str	r6, [r4, #0]
    1e7a:	682b      	ldr	r3, [r5, #0]
    1e7c:	2306      	movs	r3, #6
    1e7e:	602b      	str	r3, [r5, #0]
    1e80:	f7ff ff76 	bl	1d70 <uart0_SetBaudrate>
    1e84:	2701      	movs	r7, #1
    1e86:	4b17      	ldr	r3, [pc, #92]	; (1ee4 <uart0_Init+0x88>)
    1e88:	602f      	str	r7, [r5, #0]
    1e8a:	681b      	ldr	r3, [r3, #0]
    1e8c:	4b16      	ldr	r3, [pc, #88]	; (1ee8 <uart0_Init+0x8c>)
    1e8e:	2005      	movs	r0, #5
    1e90:	681b      	ldr	r3, [r3, #0]
    1e92:	2302      	movs	r3, #2
    1e94:	602b      	str	r3, [r5, #0]
    1e96:	2304      	movs	r3, #4
    1e98:	602b      	str	r3, [r5, #0]
    1e9a:	f7ff fdba 	bl	1a12 <nvic_enableIRQ>
    1e9e:	2103      	movs	r1, #3
    1ea0:	2005      	movs	r0, #5
    1ea2:	f7ff fdc5 	bl	1a30 <nvic_setPriority>
    1ea6:	2296      	movs	r2, #150	; 0x96
    1ea8:	4910      	ldr	r1, [pc, #64]	; (1eec <uart0_Init+0x90>)
    1eaa:	4811      	ldr	r0, [pc, #68]	; (1ef0 <uart0_Init+0x94>)
    1eac:	f001 fd71 	bl	3992 <buffer_Init>
    1eb0:	2296      	movs	r2, #150	; 0x96
    1eb2:	4910      	ldr	r1, [pc, #64]	; (1ef4 <uart0_Init+0x98>)
    1eb4:	4810      	ldr	r0, [pc, #64]	; (1ef8 <uart0_Init+0x9c>)
    1eb6:	f001 fd6c 	bl	3992 <buffer_Init>
    1eba:	4b10      	ldr	r3, [pc, #64]	; (1efc <uart0_Init+0xa0>)
    1ebc:	4638      	mov	r0, r7
    1ebe:	801e      	strh	r6, [r3, #0]
    1ec0:	4b0f      	ldr	r3, [pc, #60]	; (1f00 <uart0_Init+0xa4>)
    1ec2:	701e      	strb	r6, [r3, #0]
    1ec4:	6823      	ldr	r3, [r4, #0]
    1ec6:	433b      	orrs	r3, r7
    1ec8:	6023      	str	r3, [r4, #0]
    1eca:	6823      	ldr	r3, [r4, #0]
    1ecc:	f023 0302 	bic.w	r3, r3, #2
    1ed0:	6023      	str	r3, [r4, #0]
    1ed2:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    1ed4:	400fc0c4 	.word	0x400fc0c4
    1ed8:	4000c004 	.word	0x4000c004
    1edc:	4002c000 	.word	0x4002c000
    1ee0:	4000c008 	.word	0x4000c008
    1ee4:	4000c000 	.word	0x4000c000
    1ee8:	4000c014 	.word	0x4000c014
    1eec:	100008e0 	.word	0x100008e0
    1ef0:	100008c8 	.word	0x100008c8
    1ef4:	1000082c 	.word	0x1000082c
    1ef8:	100008d4 	.word	0x100008d4
    1efc:	100008c4 	.word	0x100008c4
    1f00:	100008c2 	.word	0x100008c2

Disassembly of section .text.uart0_GetChar:

00001f04 <uart0_GetChar>:
    1f04:	b538      	push	{r3, r4, r5, lr}
    1f06:	4605      	mov	r5, r0
    1f08:	480d      	ldr	r0, [pc, #52]	; (1f40 <uart0_GetChar+0x3c>)
    1f0a:	8883      	ldrh	r3, [r0, #4]
    1f0c:	b29b      	uxth	r3, r3
    1f0e:	b18b      	cbz	r3, 1f34 <uart0_GetChar+0x30>
    1f10:	88c3      	ldrh	r3, [r0, #6]
    1f12:	b29b      	uxth	r3, r3
    1f14:	b18b      	cbz	r3, 1f3a <uart0_GetChar+0x36>
    1f16:	4c0b      	ldr	r4, [pc, #44]	; (1f44 <uart0_GetChar+0x40>)
    1f18:	6823      	ldr	r3, [r4, #0]
    1f1a:	f023 0301 	bic.w	r3, r3, #1
    1f1e:	6023      	str	r3, [r4, #0]
    1f20:	bf00      	nop
    1f22:	f001 fd3c 	bl	399e <buffer_GetFromFront>
    1f26:	7028      	strb	r0, [r5, #0]
    1f28:	6823      	ldr	r3, [r4, #0]
    1f2a:	2001      	movs	r0, #1
    1f2c:	f043 0301 	orr.w	r3, r3, #1
    1f30:	6023      	str	r3, [r4, #0]
    1f32:	bd38      	pop	{r3, r4, r5, pc}
    1f34:	f06f 000b 	mvn.w	r0, #11
    1f38:	bd38      	pop	{r3, r4, r5, pc}
    1f3a:	f06f 000a 	mvn.w	r0, #10
    1f3e:	bd38      	pop	{r3, r4, r5, pc}
    1f40:	100008c8 	.word	0x100008c8
    1f44:	4000c004 	.word	0x4000c004

Disassembly of section .text.uart0_PutChar:

00001f48 <uart0_PutChar>:
    1f48:	4b15      	ldr	r3, [pc, #84]	; (1fa0 <uart0_PutChar+0x58>)
    1f4a:	b570      	push	{r4, r5, r6, lr}
    1f4c:	889b      	ldrh	r3, [r3, #4]
    1f4e:	b29b      	uxth	r3, r3
    1f50:	b303      	cbz	r3, 1f94 <uart0_PutChar+0x4c>
    1f52:	4c14      	ldr	r4, [pc, #80]	; (1fa4 <uart0_PutChar+0x5c>)
    1f54:	b2c5      	uxtb	r5, r0
    1f56:	6823      	ldr	r3, [r4, #0]
    1f58:	4e12      	ldr	r6, [pc, #72]	; (1fa4 <uart0_PutChar+0x5c>)
    1f5a:	f023 0302 	bic.w	r3, r3, #2
    1f5e:	6023      	str	r3, [r4, #0]
    1f60:	bf00      	nop
    1f62:	480f      	ldr	r0, [pc, #60]	; (1fa0 <uart0_PutChar+0x58>)
    1f64:	4629      	mov	r1, r5
    1f66:	f001 fd3c 	bl	39e2 <buffer_AddToEnd>
    1f6a:	6823      	ldr	r3, [r4, #0]
    1f6c:	300a      	adds	r0, #10
    1f6e:	f043 0302 	orr.w	r3, r3, #2
    1f72:	6023      	str	r3, [r4, #0]
    1f74:	d0ef      	beq.n	1f56 <uart0_PutChar+0xe>
    1f76:	4c0c      	ldr	r4, [pc, #48]	; (1fa8 <uart0_PutChar+0x60>)
    1f78:	7823      	ldrb	r3, [r4, #0]
    1f7a:	b973      	cbnz	r3, 1f9a <uart0_PutChar+0x52>
    1f7c:	4808      	ldr	r0, [pc, #32]	; (1fa0 <uart0_PutChar+0x58>)
    1f7e:	f001 fd0e 	bl	399e <buffer_GetFromFront>
    1f82:	4b0a      	ldr	r3, [pc, #40]	; (1fac <uart0_PutChar+0x64>)
    1f84:	6018      	str	r0, [r3, #0]
    1f86:	2001      	movs	r0, #1
    1f88:	7020      	strb	r0, [r4, #0]
    1f8a:	6833      	ldr	r3, [r6, #0]
    1f8c:	f043 0302 	orr.w	r3, r3, #2
    1f90:	6033      	str	r3, [r6, #0]
    1f92:	bd70      	pop	{r4, r5, r6, pc}
    1f94:	f06f 000b 	mvn.w	r0, #11
    1f98:	bd70      	pop	{r4, r5, r6, pc}
    1f9a:	2001      	movs	r0, #1
    1f9c:	bd70      	pop	{r4, r5, r6, pc}
    1f9e:	bf00      	nop
    1fa0:	100008d4 	.word	0x100008d4
    1fa4:	4000c004 	.word	0x4000c004
    1fa8:	100008c2 	.word	0x100008c2
    1fac:	4000c000 	.word	0x4000c000

Disassembly of section .text.uart0_BasicPutChar:

00001fb0 <uart0_BasicPutChar>:
    1fb0:	4a04      	ldr	r2, [pc, #16]	; (1fc4 <uart0_BasicPutChar+0x14>)
    1fb2:	6813      	ldr	r3, [r2, #0]
    1fb4:	069b      	lsls	r3, r3, #26
    1fb6:	d5fc      	bpl.n	1fb2 <uart0_BasicPutChar+0x2>
    1fb8:	4b03      	ldr	r3, [pc, #12]	; (1fc8 <uart0_BasicPutChar+0x18>)
    1fba:	b2c0      	uxtb	r0, r0
    1fbc:	6018      	str	r0, [r3, #0]
    1fbe:	2001      	movs	r0, #1
    1fc0:	4770      	bx	lr
    1fc2:	bf00      	nop
    1fc4:	4000c014 	.word	0x4000c014
    1fc8:	4000c000 	.word	0x4000c000

Disassembly of section .text.uart0_ISR:

00001fcc <uart0_ISR>:
    1fcc:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
    1fd0:	4e23      	ldr	r6, [pc, #140]	; (2060 <uart0_ISR+0x94>)
    1fd2:	4c24      	ldr	r4, [pc, #144]	; (2064 <uart0_ISR+0x98>)
    1fd4:	4d24      	ldr	r5, [pc, #144]	; (2068 <uart0_ISR+0x9c>)
    1fd6:	6833      	ldr	r3, [r6, #0]
    1fd8:	b2db      	uxtb	r3, r3
    1fda:	07da      	lsls	r2, r3, #31
    1fdc:	d43a      	bmi.n	2054 <uart0_ISR+0x88>
    1fde:	f003 030e 	and.w	r3, r3, #14
    1fe2:	3b02      	subs	r3, #2
    1fe4:	2b0a      	cmp	r3, #10
    1fe6:	d831      	bhi.n	204c <uart0_ISR+0x80>
    1fe8:	e8df f003 	tbb	[pc, r3]
    1fec:	3008301b 	.word	0x3008301b
    1ff0:	30303006 	.word	0x30303006
    1ff4:	3030      	.short	0x3030
    1ff6:	08          	.byte	0x08
    1ff7:	00          	.byte	0x00
    1ff8:	6823      	ldr	r3, [r4, #0]
    1ffa:	e7ec      	b.n	1fd6 <uart0_ISR+0xa>
    1ffc:	f8df 8074 	ldr.w	r8, [pc, #116]	; 2074 <uart0_ISR+0xa8>
    2000:	4f1a      	ldr	r7, [pc, #104]	; (206c <uart0_ISR+0xa0>)
    2002:	f8d8 1000 	ldr.w	r1, [r8]
    2006:	481a      	ldr	r0, [pc, #104]	; (2070 <uart0_ISR+0xa4>)
    2008:	b2c9      	uxtb	r1, r1
    200a:	f001 fcea 	bl	39e2 <buffer_AddToEnd>
    200e:	300a      	adds	r0, #10
    2010:	bf01      	itttt	eq
    2012:	883b      	ldrheq	r3, [r7, #0]
    2014:	3301      	addeq	r3, #1
    2016:	b29b      	uxtheq	r3, r3
    2018:	803b      	strheq	r3, [r7, #0]
    201a:	6823      	ldr	r3, [r4, #0]
    201c:	07d8      	lsls	r0, r3, #31
    201e:	d4f0      	bmi.n	2002 <uart0_ISR+0x36>
    2020:	e7d9      	b.n	1fd6 <uart0_ISR+0xa>
    2022:	4f14      	ldr	r7, [pc, #80]	; (2074 <uart0_ISR+0xa8>)
    2024:	6823      	ldr	r3, [r4, #0]
    2026:	0699      	lsls	r1, r3, #26
    2028:	d5d5      	bpl.n	1fd6 <uart0_ISR+0xa>
    202a:	4813      	ldr	r0, [pc, #76]	; (2078 <uart0_ISR+0xac>)
    202c:	f001 fcf6 	bl	3a1c <buffer_IsEmpty>
    2030:	b138      	cbz	r0, 2042 <uart0_ISR+0x76>
    2032:	4b12      	ldr	r3, [pc, #72]	; (207c <uart0_ISR+0xb0>)
    2034:	2200      	movs	r2, #0
    2036:	701a      	strb	r2, [r3, #0]
    2038:	682b      	ldr	r3, [r5, #0]
    203a:	f023 0302 	bic.w	r3, r3, #2
    203e:	602b      	str	r3, [r5, #0]
    2040:	e7c9      	b.n	1fd6 <uart0_ISR+0xa>
    2042:	480d      	ldr	r0, [pc, #52]	; (2078 <uart0_ISR+0xac>)
    2044:	f001 fcab 	bl	399e <buffer_GetFromFront>
    2048:	6038      	str	r0, [r7, #0]
    204a:	e7eb      	b.n	2024 <uart0_ISR+0x58>
    204c:	6823      	ldr	r3, [r4, #0]
    204e:	4b09      	ldr	r3, [pc, #36]	; (2074 <uart0_ISR+0xa8>)
    2050:	681b      	ldr	r3, [r3, #0]
    2052:	e7c0      	b.n	1fd6 <uart0_ISR+0xa>
    2054:	2005      	movs	r0, #5
    2056:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}
    205a:	f7ff bcdd 	b.w	1a18 <nvic_clearPendingIRQ>
    205e:	bf00      	nop
    2060:	4000c008 	.word	0x4000c008
    2064:	4000c014 	.word	0x4000c014
    2068:	4000c004 	.word	0x4000c004
    206c:	100008c4 	.word	0x100008c4
    2070:	100008c8 	.word	0x100008c8
    2074:	4000c000 	.word	0x4000c000
    2078:	100008d4 	.word	0x100008d4
    207c:	100008c2 	.word	0x100008c2

Disassembly of section .text.timer1_Set:

00002080 <timer1_Set>:
    2080:	4b04      	ldr	r3, [pc, #16]	; (2094 <timer1_Set+0x14>)
    2082:	681a      	ldr	r2, [r3, #0]
    2084:	f022 0203 	bic.w	r2, r2, #3
    2088:	601a      	str	r2, [r3, #0]
    208a:	681a      	ldr	r2, [r3, #0]
    208c:	4310      	orrs	r0, r2
    208e:	6018      	str	r0, [r3, #0]
    2090:	4770      	bx	lr
    2092:	bf00      	nop
    2094:	40008004 	.word	0x40008004

Disassembly of section .text.timer1_SetIntHandler:

00002098 <timer1_SetIntHandler>:
    2098:	2807      	cmp	r0, #7
    209a:	bf9c      	itt	ls
    209c:	4b01      	ldrls	r3, [pc, #4]	; (20a4 <timer1_SetIntHandler+0xc>)
    209e:	f843 1020 	strls.w	r1, [r3, r0, lsl #2]
    20a2:	4770      	bx	lr
    20a4:	1000061c 	.word	0x1000061c

Disassembly of section .text.timer1_ClearIntHandler:

000020a8 <timer1_ClearIntHandler>:
    20a8:	2807      	cmp	r0, #7
    20aa:	bf9e      	ittt	ls
    20ac:	4b02      	ldrls	r3, [pc, #8]	; (20b8 <timer1_ClearIntHandler+0x10>)
    20ae:	2200      	movls	r2, #0
    20b0:	f843 2020 	strls.w	r2, [r3, r0, lsl #2]
    20b4:	4770      	bx	lr
    20b6:	bf00      	nop
    20b8:	1000061c 	.word	0x1000061c

Disassembly of section .text.timer1_Init:

000020bc <timer1_Init>:
    20bc:	b510      	push	{r4, lr}
    20be:	460c      	mov	r4, r1
    20c0:	4910      	ldr	r1, [pc, #64]	; (2104 <timer1_Init+0x48>)
    20c2:	3801      	subs	r0, #1
    20c4:	680b      	ldr	r3, [r1, #0]
    20c6:	f043 0304 	orr.w	r3, r3, #4
    20ca:	600b      	str	r3, [r1, #0]
    20cc:	4b0e      	ldr	r3, [pc, #56]	; (2108 <timer1_Init+0x4c>)
    20ce:	21ff      	movs	r1, #255	; 0xff
    20d0:	6019      	str	r1, [r3, #0]
    20d2:	2102      	movs	r1, #2
    20d4:	6059      	str	r1, [r3, #4]
    20d6:	2100      	movs	r1, #0
    20d8:	60d8      	str	r0, [r3, #12]
    20da:	615a      	str	r2, [r3, #20]
    20dc:	6199      	str	r1, [r3, #24]
    20de:	b2c8      	uxtb	r0, r1
    20e0:	f7ff ffe2 	bl	20a8 <timer1_ClearIntHandler>
    20e4:	3101      	adds	r1, #1
    20e6:	2908      	cmp	r1, #8
    20e8:	d1f9      	bne.n	20de <timer1_Init+0x22>
    20ea:	2002      	movs	r0, #2
    20ec:	f7ff fc91 	bl	1a12 <nvic_enableIRQ>
    20f0:	2100      	movs	r1, #0
    20f2:	2002      	movs	r0, #2
    20f4:	f7ff fc9c 	bl	1a30 <nvic_setPriority>
    20f8:	4620      	mov	r0, r4
    20fa:	f7ff ffc1 	bl	2080 <timer1_Set>
    20fe:	2001      	movs	r0, #1
    2100:	bd10      	pop	{r4, pc}
    2102:	bf00      	nop
    2104:	400fc0c4 	.word	0x400fc0c4
    2108:	40008000 	.word	0x40008000

Disassembly of section .text.timer1_SetMatch0:

0000210c <timer1_SetMatch0>:
    210c:	4b01      	ldr	r3, [pc, #4]	; (2114 <timer1_SetMatch0+0x8>)
    210e:	6018      	str	r0, [r3, #0]
    2110:	4770      	bx	lr
    2112:	bf00      	nop
    2114:	40008018 	.word	0x40008018

Disassembly of section .text.timer1_ISR:

00002118 <timer1_ISR>:
    2118:	b508      	push	{r3, lr}
    211a:	4b0b      	ldr	r3, [pc, #44]	; (2148 <timer1_ISR+0x30>)
    211c:	681a      	ldr	r2, [r3, #0]
    211e:	07d2      	lsls	r2, r2, #31
    2120:	d50c      	bpl.n	213c <timer1_ISR+0x24>
    2122:	681a      	ldr	r2, [r3, #0]
    2124:	f042 0201 	orr.w	r2, r2, #1
    2128:	601a      	str	r2, [r3, #0]
    212a:	4a08      	ldr	r2, [pc, #32]	; (214c <timer1_ISR+0x34>)
    212c:	6813      	ldr	r3, [r2, #0]
    212e:	3301      	adds	r3, #1
    2130:	6013      	str	r3, [r2, #0]
    2132:	4b07      	ldr	r3, [pc, #28]	; (2150 <timer1_ISR+0x38>)
    2134:	681a      	ldr	r2, [r3, #0]
    2136:	b10a      	cbz	r2, 213c <timer1_ISR+0x24>
    2138:	681b      	ldr	r3, [r3, #0]
    213a:	4798      	blx	r3
    213c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
    2140:	2002      	movs	r0, #2
    2142:	f7ff bc69 	b.w	1a18 <nvic_clearPendingIRQ>
    2146:	bf00      	nop
    2148:	40008000 	.word	0x40008000
    214c:	1000063c 	.word	0x1000063c
    2150:	1000061c 	.word	0x1000061c

Disassembly of section .text.ssp1_SetClockFreq:

00002154 <ssp1_SetClockFreq>:
// parametros	frequency: velocidade do barramento e HZ
//					cortexm3 max 10Mhz, para os demais 400KHz
// Retorna: 	A frequencia ajustada no barramento
//------------------------------------------------------------------------------------------------------------------
u32 ssp1_SetClockFreq(u32 frequency) {
	u32 div = PCLK / frequency;
    2154:	4b09      	ldr	r3, [pc, #36]	; (217c <ssp1_SetClockFreq+0x28>)
    2156:	fbb3 f0f0 	udiv	r0, r3, r0

  	if (div < 8)    	div = 8;
    215a:	2807      	cmp	r0, #7
    215c:	461a      	mov	r2, r3
    215e:	d903      	bls.n	2168 <ssp1_SetClockFreq+0x14>
    2160:	28fe      	cmp	r0, #254	; 0xfe
    2162:	bf28      	it	cs
    2164:	20fe      	movcs	r0, #254	; 0xfe
    2166:	e000      	b.n	216a <ssp1_SetClockFreq+0x16>
    2168:	2008      	movs	r0, #8
  	//if (div < 1)    	div = 2;
  	else if (div > 254) div = 254;

  	++div; 
    216a:	1c43      	adds	r3, r0, #1
  	div &= ~1;
  	SSP1CPSR = div;
    216c:	4904      	ldr	r1, [pc, #16]	; (2180 <ssp1_SetClockFreq+0x2c>)
  	if (div < 8)    	div = 8;
  	//if (div < 1)    	div = 2;
  	else if (div > 254) div = 254;

  	++div; 
  	div &= ~1;
    216e:	f023 0001 	bic.w	r0, r3, #1
  	SSP1CPSR = div;
    2172:	6008      	str	r0, [r1, #0]
  	plog("SSP1: div       %u"CMD_TERMINATOR, div);
  	plog("SSP1: SSP1CPSR  %u"CMD_TERMINATOR, SSP1CPSR);
  	#endif

  	return (PCLK / div);
}
    2174:	fbb2 f0f0 	udiv	r0, r2, r0
    2178:	4770      	bx	lr
    217a:	bf00      	nop
    217c:	017d7840 	.word	0x017d7840
    2180:	40030010 	.word	0x40030010

Disassembly of section .text.spp1_SetMode:

00002184 <spp1_SetMode>:
int spp1_SetMode ( u8 mode ) {
    n8 status;

    status = pdPASS;

    switch( mode ) {
    2184:	b108      	cbz	r0, 218a <spp1_SetMode+0x6>
    2186:	2804      	cmp	r0, #4
    2188:	d104      	bne.n	2194 <spp1_SetMode+0x10>
    	case SSP1_MASTER:
        	SSP1CR1 |= SSP1_MASTER; 				// Mestre
        	break;

    	case SSP1_SLAVE:
    		SSP1CR1 &= ~SSP1_MASTER; 			// escravo
    218a:	4b03      	ldr	r3, [pc, #12]	; (2198 <spp1_SetMode+0x14>)
// Retorna: 	Retorna pdPASS se a seleção foi feito com sucesso senão retorna código do erro
//------------------------------------------------------------------------------------------------------------------
int spp1_SetMode ( u8 mode ) {
    n8 status;

    status = pdPASS;
    218c:	2001      	movs	r0, #1
    	case SSP1_MASTER:
        	SSP1CR1 |= SSP1_MASTER; 				// Mestre
        	break;

    	case SSP1_SLAVE:
    		SSP1CR1 &= ~SSP1_MASTER; 			// escravo
    218e:	681a      	ldr	r2, [r3, #0]
    2190:	601a      	str	r2, [r3, #0]
        	break;
    2192:	4770      	bx	lr

    	default:
        	status = errSPP1_ERROR_SET_MODE;
    2194:	20e1      	movs	r0, #225	; 0xe1
        	break;
    }

    return status;
}
    2196:	4770      	bx	lr
    2198:	40030004 	.word	0x40030004

Disassembly of section .text.ssp1_Init:

0000219c <ssp1_Init>:
//						SSP1_CPOL_L: Clock em baixa entre os frames
//						SSP1_CPOL_H: Clock em alta entre os frames
//					SSP1_STANDARD Tem valor 0x7. Ajusta o modo padrão para a SSP, ou seja, transmissão com 8 bits de transferencia sem interrupção
// Retorna: 	Nada
//------------------------------------------------------------------------------------------------------------------
void ssp1_Init (u8 mode, u16 config) {
    219c:	b507      	push	{r0, r1, r2, lr}
  	u32 i;
  	volatile u32 dummy __attribute__ ((unused)); // Usar atributo para não emitir aviso pelo compilador
  	
  	PCONP |= PCSSP1;
    219e:	4a11      	ldr	r2, [pc, #68]	; (21e4 <ssp1_Init+0x48>)
    21a0:	6813      	ldr	r3, [r2, #0]
    21a2:	f443 6380 	orr.w	r3, r3, #1024	; 0x400
    21a6:	6013      	str	r3, [r2, #0]
	pinCFG.numPin = SSP1_MISO_NUMPIN;	// Número do pino do ARM para o MISO
	pinsel_configPin(&pinCFG);			// Aplica configurações
	pinCFG.numPin = SSP1_MOSI_NUMPIN;	// Número do pino do ARM para o MOSI
	pinsel_configPin(&pinCFG);			// Aplica configurações
	#else
		ssp1_ConfigPort();
    21a8:	4a0f      	ldr	r2, [pc, #60]	; (21e8 <ssp1_Init+0x4c>)
    21aa:	6813      	ldr	r3, [r2, #0]
    21ac:	f443 2328 	orr.w	r3, r3, #688128	; 0xa8000
    21b0:	6013      	str	r3, [r2, #0]
	#endif
  	#endif

	SSP1CR0  = config; // | SSP1_FRF_SPI;
    21b2:	4b0e      	ldr	r3, [pc, #56]	; (21ec <ssp1_Init+0x50>)
    21b4:	6019      	str	r1, [r3, #0]
  	spp1_SetMode( mode );
    21b6:	f7ff ffe5 	bl	2184 <spp1_SetMode>
  	SSP1IMSC = 0x0;
    21ba:	4b0d      	ldr	r3, [pc, #52]	; (21f0 <ssp1_Init+0x54>)
    21bc:	2200      	movs	r2, #0
    21be:	601a      	str	r2, [r3, #0]
  	
  	//  Clock Freq. Identification Mode < 400kHz
  	ssp1_SetClockFreq (400000);
    21c0:	480c      	ldr	r0, [pc, #48]	; (21f4 <ssp1_Init+0x58>)
    21c2:	f7ff ffc7 	bl	2154 <ssp1_SetClockFreq>

  	//  Enable SPI
  	SSP1CR1 |= SSP1_SSE_ON; // Habilita SSP
    21c6:	4a0c      	ldr	r2, [pc, #48]	; (21f8 <ssp1_Init+0x5c>)
  	plog("SSP1: SSP0CR0 %u"CMD_TERMINATOR, SSP1CR0);
  	plog("SSP1: SSP0CR1 %u"CMD_TERMINATOR, SSP1CR1);
	#endif

  	for (i = 0; i < 8; i++)
    	dummy = SSP1DR;
    21c8:	490c      	ldr	r1, [pc, #48]	; (21fc <ssp1_Init+0x60>)
  	
  	//  Clock Freq. Identification Mode < 400kHz
  	ssp1_SetClockFreq (400000);

  	//  Enable SPI
  	SSP1CR1 |= SSP1_SSE_ON; // Habilita SSP
    21ca:	6813      	ldr	r3, [r2, #0]
    21cc:	f043 0302 	orr.w	r3, r3, #2
    21d0:	6013      	str	r3, [r2, #0]
    21d2:	2308      	movs	r3, #8
  	plog("SSP1: SSP0CR0 %u"CMD_TERMINATOR, SSP1CR0);
  	plog("SSP1: SSP0CR1 %u"CMD_TERMINATOR, SSP1CR1);
	#endif

  	for (i = 0; i < 8; i++)
    	dummy = SSP1DR;
    21d4:	680a      	ldr	r2, [r1, #0]
  	plog("SSP1: INIT"CMD_TERMINATOR);
  	plog("SSP1: SSP0CR0 %u"CMD_TERMINATOR, SSP1CR0);
  	plog("SSP1: SSP0CR1 %u"CMD_TERMINATOR, SSP1CR1);
	#endif

  	for (i = 0; i < 8; i++)
    21d6:	3b01      	subs	r3, #1
    	dummy = SSP1DR;
    21d8:	9201      	str	r2, [sp, #4]
  	plog("SSP1: INIT"CMD_TERMINATOR);
  	plog("SSP1: SSP0CR0 %u"CMD_TERMINATOR, SSP1CR0);
  	plog("SSP1: SSP0CR1 %u"CMD_TERMINATOR, SSP1CR1);
	#endif

  	for (i = 0; i < 8; i++)
    21da:	d1fb      	bne.n	21d4 <ssp1_Init+0x38>
    	dummy = SSP1DR;
}
    21dc:	b003      	add	sp, #12
    21de:	f85d fb04 	ldr.w	pc, [sp], #4
    21e2:	bf00      	nop
    21e4:	400fc0c4 	.word	0x400fc0c4
    21e8:	4002c000 	.word	0x4002c000
    21ec:	40030000 	.word	0x40030000
    21f0:	40030014 	.word	0x40030014
    21f4:	00061a80 	.word	0x00061a80
    21f8:	40030004 	.word	0x40030004
    21fc:	40030008 	.word	0x40030008

Disassembly of section .text.ssp1_TransferByte:

00002200 <ssp1_TransferByte>:
// Descrição: 	Troca de bytes entre os dispositivos
// Parametros:	Byte a ser enviado
// Retorna:		Byte Recebido
//------------------------------------------------------------------------------------------------------------------
u8 ssp1_TransferByte (u8 c) {
	while (!(SSP1SR & SSP1_TNF)); // Espere se a FIFO estiver cheia
    2200:	4a06      	ldr	r2, [pc, #24]	; (221c <ssp1_TransferByte+0x1c>)
    2202:	6813      	ldr	r3, [r2, #0]
    2204:	4905      	ldr	r1, [pc, #20]	; (221c <ssp1_TransferByte+0x1c>)
    2206:	f013 0f02 	tst.w	r3, #2
    220a:	d0fa      	beq.n	2202 <ssp1_TransferByte+0x2>
  	SSP1DR = c;
    220c:	4b04      	ldr	r3, [pc, #16]	; (2220 <ssp1_TransferByte+0x20>)
    220e:	6018      	str	r0, [r3, #0]
  	while (SSP1SR & SSP1_BSY);
    2210:	680a      	ldr	r2, [r1, #0]
    2212:	06d2      	lsls	r2, r2, #27
    2214:	d4fc      	bmi.n	2210 <ssp1_TransferByte+0x10>

  	return SSP1DR;
    2216:	6818      	ldr	r0, [r3, #0]
}
    2218:	b2c0      	uxtb	r0, r0
    221a:	4770      	bx	lr
    221c:	4003000c 	.word	0x4003000c
    2220:	40030008 	.word	0x40030008

Disassembly of section .text.showVicError:

00002224 <showVicError>:
#include "vic.h"
#include "app.h"
#include "uart0_irq.h"

void showVicError(int n) {
    2224:	4604      	mov	r4, r0
    2226:	e92d 4888 	stmdb	sp!, {r3, r7, fp, lr}
	par_ValuesDefaults();
    222a:	f000 fb8b 	bl	2944 <par_ValuesDefaults>
	flash_Save();
    222e:	f000 fba5 	bl	297c <flash_Save>
	flash_SaveLogError(control.ticks, n);
    2232:	4b27      	ldr	r3, [pc, #156]	; (22d0 <showVicError+0xac>)
    2234:	b2e1      	uxtb	r1, r4
    2236:	6818      	ldr	r0, [r3, #0]
    2238:	f000 fc52 	bl	2ae0 <flash_SaveLogError>

	// Filtra erro para exibição para usuário via led erro
	if (n < 100) n = 1; 					// erro de sistema
    223c:	2c63      	cmp	r4, #99	; 0x63
    223e:	dd10      	ble.n	2262 <showVicError+0x3e>
	else if (n==errCRC_FLASH) n=2;			// erro CRC da flash parametros
    2240:	2c64      	cmp	r4, #100	; 0x64
    2242:	d010      	beq.n	2266 <showVicError+0x42>
	else if (n==errSERVO_PAR_OFFSET) n=3;
    2244:	2c65      	cmp	r4, #101	; 0x65
    2246:	d010      	beq.n	226a <showVicError+0x46>
	else if (n==errSERVO_PAR_INIT) n=4;
    2248:	2c66      	cmp	r4, #102	; 0x66
    224a:	d010      	beq.n	226e <showVicError+0x4a>
	else if (n==errSERVO_PAR_MIM) n=5;
    224c:	2c67      	cmp	r4, #103	; 0x67
    224e:	d010      	beq.n	2272 <showVicError+0x4e>
	else if (n==errSERVO_PAR_MAX) n=6;
    2250:	2c68      	cmp	r4, #104	; 0x68
    2252:	d010      	beq.n	2276 <showVicError+0x52>
	else if (n==errSERVO_PAR_TIME_PROGRESS) n=7;
    2254:	2c69      	cmp	r4, #105	; 0x69
    2256:	d010      	beq.n	227a <showVicError+0x56>
	else if (n==errSERVO_PAR_TIME_OFF) n=8;
	else n=9; // Demais erros
    2258:	2c6a      	cmp	r4, #106	; 0x6a
    225a:	bf0c      	ite	eq
    225c:	2408      	moveq	r4, #8
    225e:	2409      	movne	r4, #9
    2260:	e00c      	b.n	227c <showVicError+0x58>
	par_ValuesDefaults();
	flash_Save();
	flash_SaveLogError(control.ticks, n);

	// Filtra erro para exibição para usuário via led erro
	if (n < 100) n = 1; 					// erro de sistema
    2262:	2401      	movs	r4, #1
    2264:	e00a      	b.n	227c <showVicError+0x58>
	else if (n==errCRC_FLASH) n=2;			// erro CRC da flash parametros
    2266:	2402      	movs	r4, #2
    2268:	e008      	b.n	227c <showVicError+0x58>
	else if (n==errSERVO_PAR_OFFSET) n=3;
    226a:	2403      	movs	r4, #3
    226c:	e006      	b.n	227c <showVicError+0x58>
	else if (n==errSERVO_PAR_INIT) n=4;
    226e:	2404      	movs	r4, #4
    2270:	e004      	b.n	227c <showVicError+0x58>
	else if (n==errSERVO_PAR_MIM) n=5;
    2272:	2405      	movs	r4, #5
    2274:	e002      	b.n	227c <showVicError+0x58>
	else if (n==errSERVO_PAR_MAX) n=6;
    2276:	2406      	movs	r4, #6
    2278:	e000      	b.n	227c <showVicError+0x58>
	else if (n==errSERVO_PAR_TIME_PROGRESS) n=7;
    227a:	2407      	movs	r4, #7
	else if (n==errSERVO_PAR_TIME_OFF) n=8;
	else n=9; // Demais erros

	irq_Disable();
    227c:	b672      	cpsid	i

	static int x;
	while(1) {
		for (x=0;x<n;x++) {
    227e:	4d15      	ldr	r5, [pc, #84]	; (22d4 <showVicError+0xb0>)
			ledERROR_On();	buzzer_On();	delay_ms(250);
    2280:	f8df 9060 	ldr.w	r9, [pc, #96]	; 22e4 <showVicError+0xc0>

	irq_Disable();

	static int x;
	while(1) {
		for (x=0;x<n;x++) {
    2284:	f04f 0800 	mov.w	r8, #0
    2288:	f8df a048 	ldr.w	sl, [pc, #72]	; 22d4 <showVicError+0xb0>
			ledERROR_On();	buzzer_On();	delay_ms(250);
    228c:	f8df b058 	ldr.w	fp, [pc, #88]	; 22e8 <showVicError+0xc4>

	irq_Disable();

	static int x;
	while(1) {
		for (x=0;x<n;x++) {
    2290:	f8c5 8000 	str.w	r8, [r5]
    2294:	f8da 3000 	ldr.w	r3, [sl]
    2298:	429c      	cmp	r4, r3
    229a:	dd15      	ble.n	22c8 <showVicError+0xa4>
			ledERROR_On();	buzzer_On();	delay_ms(250);
    229c:	f04f 5700 	mov.w	r7, #536870912	; 0x20000000
    22a0:	f44f 0680 	mov.w	r6, #4194304	; 0x400000
    22a4:	f8c9 7000 	str.w	r7, [r9]
    22a8:	480b      	ldr	r0, [pc, #44]	; (22d8 <showVicError+0xb4>)
    22aa:	f8cb 6000 	str.w	r6, [fp]
    22ae:	f7ff fd5b 	bl	1d68 <delay>
			ledERROR_Off();	buzzer_Off();	delay_ms(250);
    22b2:	4b0a      	ldr	r3, [pc, #40]	; (22dc <showVicError+0xb8>)
    22b4:	4808      	ldr	r0, [pc, #32]	; (22d8 <showVicError+0xb4>)
    22b6:	601f      	str	r7, [r3, #0]
    22b8:	f843 6c80 	str.w	r6, [r3, #-128]
    22bc:	f7ff fd54 	bl	1d68 <delay>

	irq_Disable();

	static int x;
	while(1) {
		for (x=0;x<n;x++) {
    22c0:	682b      	ldr	r3, [r5, #0]
    22c2:	3301      	adds	r3, #1
    22c4:	602b      	str	r3, [r5, #0]
    22c6:	e7e5      	b.n	2294 <showVicError+0x70>
			ledERROR_On();	buzzer_On();	delay_ms(250);
			ledERROR_Off();	buzzer_Off();	delay_ms(250);
		}
		delay_ms(1000);
    22c8:	4805      	ldr	r0, [pc, #20]	; (22e0 <showVicError+0xbc>)
    22ca:	f7ff fd4d 	bl	1d68 <delay>
	}
    22ce:	e7db      	b.n	2288 <showVicError+0x64>
    22d0:	10000640 	.word	0x10000640
    22d4:	10000978 	.word	0x10000978
    22d8:	007f26c8 	.word	0x007f26c8
    22dc:	2009c09c 	.word	0x2009c09c
    22e0:	01fc9f08 	.word	0x01fc9f08
    22e4:	2009c098 	.word	0x2009c098
    22e8:	2009c018 	.word	0x2009c018

Disassembly of section .text.startup.main:

000022ec <main>:
}

int main(void) {
    22ec:	b508      	push	{r3, lr}
	nvic_SetIntHandler(showVicError);
    22ee:	4825      	ldr	r0, [pc, #148]	; (2384 <main+0x98>)
    22f0:	f7ff fbc0 	bl	1a74 <nvic_SetIntHandler>
	// NÃO USAR UART COM INTERRUPÇÃO PARA O LOG, POIS CONSTANTEMENTE A
  	// POSIÇÃO DOS VETORES DE INTERRUPÇÕES COM O USO DO BOOTLOADER

  	// REGISTRANDO AS ENTRADAS E SAÍDAS PADRÃO AOS SEUS RESPECTIVOS DISPOSTIVOS
	// PORTA PARA CLI DEVE SER COM INTERRUPÇÃO
  	lgetchar_RegisterDev(uart0_GetChar);
    22f4:	4824      	ldr	r0, [pc, #144]	; (2388 <main+0x9c>)
    22f6:	f001 f96f 	bl	35d8 <lgetchar_RegisterDev>
	lputchar_RegisterDev(uart0_PutChar);
    22fa:	4824      	ldr	r0, [pc, #144]	; (238c <main+0xa0>)
    22fc:	f001 f960 	bl	35c0 <lputchar_RegisterDev>
	ldebug_RegisterDev(uart0_BasicPutChar);
    2300:	4823      	ldr	r0, [pc, #140]	; (2390 <main+0xa4>)
    2302:	f001 f963 	bl	35cc <ldebug_RegisterDev>
	uart0_Init(115200);
    2306:	f44f 30e1 	mov.w	r0, #115200	; 0x1c200
    230a:	f7ff fda7 	bl	1e5c <uart0_Init>

	systime_Init();
    230e:	f7ff fcc1 	bl	1c94 <systime_Init>
	systime_SetIntHandler(app_Tick, 1); // Chamar o a função callsystem a cada 1ms OBS: Levando em consideração o SYSTIME_IRQ_TICK_DIV
    2312:	2101      	movs	r1, #1
    2314:	481f      	ldr	r0, [pc, #124]	; (2394 <main+0xa8>)
    2316:	f7ff fceb 	bl	1cf0 <systime_SetIntHandler>
	ledError_Init();
    231a:	f001 fc23 	bl	3b64 <ledError_Init>
	beep_Init();
    231e:	f001 fd29 	bl	3d74 <beep_Init>
	gKey_Init(onKeyDown, &onKeyPress, &onKeyUp);	// Anexar os eventos do teclado
    2322:	4a1d      	ldr	r2, [pc, #116]	; (2398 <main+0xac>)
    2324:	491d      	ldr	r1, [pc, #116]	; (239c <main+0xb0>)
    2326:	481e      	ldr	r0, [pc, #120]	; (23a0 <main+0xb4>)
    2328:	f001 fc70 	bl	3c0c <gKey_Init>
	servo_Init();
    232c:	f001 f810 	bl	3350 <servo_Init>
	lcd_Init(16, 2, LCD_5x8DOTS);
    2330:	2200      	movs	r2, #0
    2332:	2102      	movs	r1, #2
    2334:	2010      	movs	r0, #16
    2336:	f001 ff61 	bl	41fc <lcd_Init>
	lcd_printfInit(16, STDIO_DEV1);
    233a:	2104      	movs	r1, #4
    233c:	2010      	movs	r0, #16
    233e:	f001 ffb5 	bl	42ac <lcd_printfInit>
	servus_Init(pdOFF);
    2342:	2000      	movs	r0, #0
    2344:	f002 f90c 	bl	4560 <servus_Init>
	ssp1_Init(SSP0_MASTER, SSP0_CPOL_H|SSP0_CPHA_H|SSP0_DSS_8); // inicar o barramento SPI a 400Khz
    2348:	21c7      	movs	r1, #199	; 0xc7
    234a:	2000      	movs	r0, #0
    234c:	f7ff ff26 	bl	219c <ssp1_Init>
	joy_Init();
    2350:	f002 f9b8 	bl	46c4 <joy_Init>

	irq_Enable(); 	// Habilitar interrupções
    2354:	b662      	cpsie	i
	app_Init();
    2356:	f000 f82d 	bl	23b4 <app_Init>

	lprintf(CMD_TERMINATOR);
    235a:	4912      	ldr	r1, [pc, #72]	; (23a4 <main+0xb8>)
    235c:	2001      	movs	r0, #1
    235e:	f001 fb03 	bl	3968 <rprintf>
	lprintf(PROGAM_NAME);
    2362:	4911      	ldr	r1, [pc, #68]	; (23a8 <main+0xbc>)
    2364:	2001      	movs	r0, #1
    2366:	f001 faff 	bl	3968 <rprintf>
	lprintf("ucLibc version "__VERSION CMD_TERMINATOR);
    236a:	4910      	ldr	r1, [pc, #64]	; (23ac <main+0xc0>)
    236c:	2001      	movs	r0, #1
    236e:	f001 fafb 	bl	3968 <rprintf>

	while (1) {
		prompt_Process();
		app_Process();
		gKey_Process(control.key); // se há tecla pressiona o processo vai chamar os onKeyXXXX
    2372:	4c0f      	ldr	r4, [pc, #60]	; (23b0 <main+0xc4>)
	lprintf(CMD_TERMINATOR);
	lprintf(PROGAM_NAME);
	lprintf("ucLibc version "__VERSION CMD_TERMINATOR);

	while (1) {
		prompt_Process();
    2374:	f000 fe2e 	bl	2fd4 <prompt_Process>
		app_Process();
    2378:	f000 f8c6 	bl	2508 <app_Process>
		gKey_Process(control.key); // se há tecla pressiona o processo vai chamar os onKeyXXXX
    237c:	7920      	ldrb	r0, [r4, #4]
    237e:	f001 fc61 	bl	3c44 <gKey_Process>
    2382:	e7f7      	b.n	2374 <main+0x88>
    2384:	00002225 	.word	0x00002225
    2388:	00001f05 	.word	0x00001f05
    238c:	00001f49 	.word	0x00001f49
    2390:	00001fb1 	.word	0x00001fb1
    2394:	00002461 	.word	0x00002461
    2398:	000030a9 	.word	0x000030a9
    239c:	00003091 	.word	0x00003091
    23a0:	0000305d 	.word	0x0000305d
    23a4:	00005474 	.word	0x00005474
    23a8:	00004c44 	.word	0x00004c44
    23ac:	00004f7c 	.word	0x00004f7c
    23b0:	10000640 	.word	0x10000640

Disassembly of section .text.app_Init:

000023b4 <app_Init>:
#include "app.h"

void app_Init(void) {
    23b4:	b510      	push	{r4, lr}
	control.ticks = 0;
    23b6:	4c27      	ldr	r4, [pc, #156]	; (2454 <app_Init+0xa0>)
    23b8:	2300      	movs	r3, #0
    23ba:	6023      	str	r3, [r4, #0]
	control.key = 0;
    23bc:	7123      	strb	r3, [r4, #4]

	led1_Init();
    23be:	4b26      	ldr	r3, [pc, #152]	; (2458 <app_Init+0xa4>)
    23c0:	681a      	ldr	r2, [r3, #0]
    23c2:	f042 0201 	orr.w	r2, r2, #1
    23c6:	601a      	str	r2, [r3, #0]
	led2_Init();
    23c8:	681a      	ldr	r2, [r3, #0]
    23ca:	f042 0202 	orr.w	r2, r2, #2
    23ce:	601a      	str	r2, [r3, #0]
	led3_Init();
    23d0:	f853 2c20 	ldr.w	r2, [r3, #-32]
    23d4:	f042 5280 	orr.w	r2, r2, #268435456	; 0x10000000
    23d8:	f843 2c20 	str.w	r2, [r3, #-32]
	led4_Init();
    23dc:	f853 2c20 	ldr.w	r2, [r3, #-32]
    23e0:	f042 5200 	orr.w	r2, r2, #536870912	; 0x20000000
    23e4:	f843 2c20 	str.w	r2, [r3, #-32]
	led5_Init();
    23e8:	f853 2c40 	ldr.w	r2, [r3, #-64]
    23ec:	f042 4280 	orr.w	r2, r2, #1073741824	; 0x40000000
    23f0:	f843 2c40 	str.w	r2, [r3, #-64]
	led6_Init();
    23f4:	f853 2c40 	ldr.w	r2, [r3, #-64]
    23f8:	f042 5200 	orr.w	r2, r2, #536870912	; 0x20000000
    23fc:	f843 2c40 	str.w	r2, [r3, #-64]

	relay_Init();
    2400:	f000 fe5e 	bl	30c0 <relay_Init>

	flash_Load();
    2404:	f000 fafe 	bl	2a04 <flash_Load>

 	// se os valores lidos, seja da flash ou padrões, não estão corretos trava o sistema e sinaliza o erro
 	int check = check_Values();
    2408:	f000 fa62 	bl	28d0 <check_Values>
 	if (check!=pdOK) showVicError(check);
    240c:	2801      	cmp	r0, #1
    240e:	d001      	beq.n	2414 <app_Init+0x60>
    2410:	f7ff ff08 	bl	2224 <showVicError>

 	servo_Init();
    2414:	f000 ff9c 	bl	3350 <servo_Init>

	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    2418:	2300      	movs	r3, #0
		control.joy[x].updated = pdFALSE;
		control.joy[x].pos = control.servo[x].posNew;
    241a:	201c      	movs	r0, #28
 	if (check!=pdOK) showVicError(check);

 	servo_Init();

	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		control.joy[x].updated = pdFALSE;
    241c:	f103 022e 	add.w	r2, r3, #46	; 0x2e
    2420:	f814 1032 	ldrb.w	r1, [r4, r2, lsl #3]
    2424:	f36f 0100 	bfc	r1, #0, #1
    2428:	f804 1032 	strb.w	r1, [r4, r2, lsl #3]
		control.joy[x].pos = control.servo[x].posNew;
    242c:	fb00 4103 	mla	r1, r0, r3, r4
 	int check = check_Values();
 	if (check!=pdOK) showVicError(check);

 	servo_Init();

	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    2430:	3301      	adds	r3, #1
		control.joy[x].updated = pdFALSE;
		control.joy[x].pos = control.servo[x].posNew;
    2432:	f8d1 10ac 	ldr.w	r1, [r1, #172]	; 0xac
    2436:	eb04 02c2 	add.w	r2, r4, r2, lsl #3
 	int check = check_Values();
 	if (check!=pdOK) showVicError(check);

 	servo_Init();

	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    243a:	2b07      	cmp	r3, #7
		control.joy[x].updated = pdFALSE;
		control.joy[x].pos = control.servo[x].posNew;
    243c:	6051      	str	r1, [r2, #4]
 	int check = check_Values();
 	if (check!=pdOK) showVicError(check);

 	servo_Init();

	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    243e:	d1ed      	bne.n	241c <app_Init+0x68>
		control.joy[x].updated = pdFALSE;
		control.joy[x].pos = control.servo[x].posNew;
	}

	lcd_SetCursor(0, 0);
    2440:	2100      	movs	r1, #0
    2442:	4608      	mov	r0, r1
    2444:	f001 feb8 	bl	41b8 <lcd_SetCursor>
	lcd_printf("rexARM");
}
    2448:	e8bd 4010 	ldmia.w	sp!, {r4, lr}
		control.joy[x].updated = pdFALSE;
		control.joy[x].pos = control.servo[x].posNew;
	}

	lcd_SetCursor(0, 0);
	lcd_printf("rexARM");
    244c:	4803      	ldr	r0, [pc, #12]	; (245c <app_Init+0xa8>)
    244e:	f001 bf3d 	b.w	42cc <lcd_printf>
    2452:	bf00      	nop
    2454:	10000640 	.word	0x10000640
    2458:	2009c040 	.word	0x2009c040
    245c:	00004c84 	.word	0x00004c84

Disassembly of section .text.app_Tick:

00002460 <app_Tick>:
}

// Aqui descre, ou chame, códigos que controlam tempos ou que sejam executados em tempos reguladores
void app_Tick(void) {
    2460:	b570      	push	{r4, r5, r6, lr}
	// ATENÇÃO:  tempo de execução de TODOS os TICKS dentro dessa função NÃO pode ser superior a 1ms
	ledError_Tick();
    2462:	f001 fb8b 	bl	3b7c <ledError_Tick>
	beep_Tick();
    2466:	f001 fcad 	bl	3dc4 <beep_Tick>
	gKey_Tick();
    246a:	f001 fbe1 	bl	3c30 <gKey_Tick>
	relay_Tick();
    246e:	f000 fe57 	bl	3120 <relay_Tick>
	//ssp1_Init(SSP0_MASTER, SSP0_CPOL_H|SSP0_CPHA_H|SSP0_DSS_8); // inicar o barramento SPI a 400Khz
	joy_Tick();
    2472:	f002 f943 	bl	46fc <joy_Tick>

	// LEITURA DO TECLADO a cada 3ms
	static volatile uint timeReadKey = 0;
	static int bufKey[3];
	static uint idx = 0;
	if (timeReadKey) timeReadKey--;
    2476:	4b1f      	ldr	r3, [pc, #124]	; (24f4 <app_Tick+0x94>)
    2478:	681a      	ldr	r2, [r3, #0]
    247a:	b112      	cbz	r2, 2482 <app_Tick+0x22>
    247c:	681a      	ldr	r2, [r3, #0]
    247e:	3a01      	subs	r2, #1
    2480:	601a      	str	r2, [r3, #0]
	if (timeReadKey == 0) {
    2482:	681b      	ldr	r3, [r3, #0]
    2484:	4c1c      	ldr	r4, [pc, #112]	; (24f8 <app_Tick+0x98>)
    2486:	2b00      	cmp	r3, #0
    2488:	d12f      	bne.n	24ea <app_Tick+0x8a>
		timeReadKey = 3;

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
    248a:	481c      	ldr	r0, [pc, #112]	; (24fc <app_Tick+0x9c>)
	static volatile uint timeReadKey = 0;
	static int bufKey[3];
	static uint idx = 0;
	if (timeReadKey) timeReadKey--;
	if (timeReadKey == 0) {
		timeReadKey = 3;
    248c:	4a19      	ldr	r2, [pc, #100]	; (24f4 <app_Tick+0x94>)

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
    248e:	6801      	ldr	r1, [r0, #0]
	static volatile uint timeReadKey = 0;
	static int bufKey[3];
	static uint idx = 0;
	if (timeReadKey) timeReadKey--;
	if (timeReadKey == 0) {
		timeReadKey = 3;
    2490:	2303      	movs	r3, #3
    2492:	6013      	str	r3, [r2, #0]

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
    2494:	fbb1 f3f3 	udiv	r3, r1, r3
    2498:	4d19      	ldr	r5, [pc, #100]	; (2500 <app_Tick+0xa0>)
    249a:	eb03 0343 	add.w	r3, r3, r3, lsl #1
    249e:	1aca      	subs	r2, r1, r3
    24a0:	682b      	ldr	r3, [r5, #0]
		bufKey[idx%3] |= (sw1_PIN&sw1_NUMPIN)?SW1:0;
    24a2:	682e      	ldr	r6, [r5, #0]
		bufKey[idx%3] |= (sw2_PIN&sw2_NUMPIN)?SW2:0;
    24a4:	682d      	ldr	r5, [r5, #0]
	if (timeReadKey == 0) {
		timeReadKey = 3;

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
		bufKey[idx%3] |= (sw1_PIN&sw1_NUMPIN)?SW1:0;
    24a6:	f416 2f00 	tst.w	r6, #524288	; 0x80000
    24aa:	bf14      	ite	ne
    24ac:	2602      	movne	r6, #2
    24ae:	2600      	moveq	r6, #0
	if (timeReadKey) timeReadKey--;
	if (timeReadKey == 0) {
		timeReadKey = 3;

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
    24b0:	f3c3 4380 	ubfx	r3, r3, #18, #1
		bufKey[idx%3] |= (sw1_PIN&sw1_NUMPIN)?SW1:0;
		bufKey[idx%3] |= (sw2_PIN&sw2_NUMPIN)?SW2:0;
    24b4:	f415 1f80 	tst.w	r5, #1048576	; 0x100000
	if (timeReadKey == 0) {
		timeReadKey = 3;

		// fazer debounce no teclado
		bufKey[idx%3] = (sw0_PIN&sw0_NUMPIN)?SW0:0;
		bufKey[idx%3] |= (sw1_PIN&sw1_NUMPIN)?SW1:0;
    24b8:	ea43 0306 	orr.w	r3, r3, r6
		bufKey[idx%3] |= (sw2_PIN&sw2_NUMPIN)?SW2:0;
    24bc:	4d11      	ldr	r5, [pc, #68]	; (2504 <app_Tick+0xa4>)
    24be:	bf14      	ite	ne
    24c0:	2604      	movne	r6, #4
    24c2:	2600      	moveq	r6, #0
    24c4:	4333      	orrs	r3, r6
    24c6:	f845 3022 	str.w	r3, [r5, r2, lsl #2]

		if ( (bufKey[0] == bufKey[1]) && (bufKey[1] == bufKey[2]) ) {
    24ca:	682b      	ldr	r3, [r5, #0]
    24cc:	686a      	ldr	r2, [r5, #4]
    24ce:	4293      	cmp	r3, r2
    24d0:	d105      	bne.n	24de <app_Tick+0x7e>
    24d2:	68aa      	ldr	r2, [r5, #8]
    24d4:	4293      	cmp	r3, r2
			control.key = bufKey[2]&0x7; // para que não pegar o botão de reconfigure
    24d6:	bf04      	itt	eq
    24d8:	f003 0307 	andeq.w	r3, r3, #7
    24dc:	7123      	strbeq	r3, [r4, #4]
		}
		if (idx == 2) idx = 0; else idx++;
    24de:	2902      	cmp	r1, #2
    24e0:	bf0b      	itete	eq
    24e2:	2300      	moveq	r3, #0
    24e4:	3101      	addne	r1, #1
    24e6:	6003      	streq	r3, [r0, #0]
    24e8:	6001      	strne	r1, [r0, #0]
	}

	control.ticks++; // Contador de ticks do sistema
    24ea:	6823      	ldr	r3, [r4, #0]
    24ec:	3301      	adds	r3, #1
    24ee:	6023      	str	r3, [r4, #0]
    24f0:	bd70      	pop	{r4, r5, r6, pc}
    24f2:	bf00      	nop
    24f4:	1000097c 	.word	0x1000097c
    24f8:	10000640 	.word	0x10000640
    24fc:	1000098c 	.word	0x1000098c
    2500:	2009c034 	.word	0x2009c034
    2504:	10000980 	.word	0x10000980

Disassembly of section .text.app_Process:

00002508 <app_Process>:
}


// Aqui descre, ou chame, códigos que não controlam tempos ou que não sejam executados em tempo reguladores, pelo menos diretamente
void app_Process(void) {
    2508:	b538      	push	{r3, r4, r5, lr}
//	static uint ticks_d = 0;
//	if (!( (control.ticks%100==0) && (control.ticks != ticks_d) )) return;
//	ticks_d = control.ticks;

	int buttons = joy_Read();
    250a:	f002 f8ef 	bl	46ec <joy_Read>
	if (buttons == 0) return;
    250e:	4604      	mov	r4, r0
    2510:	2800      	cmp	r0, #0
    2512:	f000 8176 	beq.w	2802 <app_Process+0x2fa>

	lcd_SetCursor(0,1);
    2516:	2101      	movs	r1, #1
    2518:	2000      	movs	r0, #0
    251a:	f001 fe4d 	bl	41b8 <lcd_SetCursor>

	#define STEP 10 // DEVE SER MULTIPLO DE 10

	tParServo* parServo;
	switch (buttons) {
    251e:	2c40      	cmp	r4, #64	; 0x40
    2520:	f000 80b8 	beq.w	2694 <app_Process+0x18c>
    2524:	dc14      	bgt.n	2550 <app_Process+0x48>
    2526:	2c04      	cmp	r4, #4
    2528:	f000 8105 	beq.w	2736 <app_Process+0x22e>
    252c:	dc06      	bgt.n	253c <app_Process+0x34>
    252e:	2c01      	cmp	r4, #1
    2530:	f000 813b 	beq.w	27aa <app_Process+0x2a2>
    2534:	2c02      	cmp	r4, #2
    2536:	f000 813d 	beq.w	27b4 <app_Process+0x2ac>
    253a:	e12f      	b.n	279c <app_Process+0x294>
    253c:	2c10      	cmp	r4, #16
    253e:	f000 808e 	beq.w	265e <app_Process+0x156>
    2542:	2c20      	cmp	r4, #32
    2544:	f000 80c1 	beq.w	26ca <app_Process+0x1c2>
    2548:	2c08      	cmp	r4, #8
    254a:	f040 8127 	bne.w	279c <app_Process+0x294>
    254e:	e10d      	b.n	276c <app_Process+0x264>
    2550:	f5b4 5f80 	cmp.w	r4, #4096	; 0x1000
    2554:	d017      	beq.n	2586 <app_Process+0x7e>
    2556:	dc0b      	bgt.n	2570 <app_Process+0x68>
    2558:	f5b4 7f80 	cmp.w	r4, #256	; 0x100
    255c:	f000 812f 	beq.w	27be <app_Process+0x2b6>
    2560:	f5b4 6f00 	cmp.w	r4, #2048	; 0x800
    2564:	f000 812f 	beq.w	27c6 <app_Process+0x2be>
    2568:	2c80      	cmp	r4, #128	; 0x80
    256a:	f040 8117 	bne.w	279c <app_Process+0x294>
    256e:	e0c7      	b.n	2700 <app_Process+0x1f8>
    2570:	f5b4 4f80 	cmp.w	r4, #16384	; 0x4000
    2574:	d022      	beq.n	25bc <app_Process+0xb4>
    2576:	f5b4 4f00 	cmp.w	r4, #32768	; 0x8000
    257a:	d03a      	beq.n	25f2 <app_Process+0xea>
    257c:	f5b4 5f00 	cmp.w	r4, #8192	; 0x2000
    2580:	f040 810c 	bne.w	279c <app_Process+0x294>
    2584:	e050      	b.n	2628 <app_Process+0x120>
	case joypsKEY_UP:
		parServo = (tParServo*)control.servo[1].par;
		if (control.joy[1].pos+STEP <= (uint)parServo->max) {
    2586:	4b9f      	ldr	r3, [pc, #636]	; (2804 <app_Process+0x2fc>)
    2588:	f8d3 217c 	ldr.w	r2, [r3, #380]	; 0x17c
    258c:	f8d3 10d8 	ldr.w	r1, [r3, #216]	; 0xd8
    2590:	320a      	adds	r2, #10
    2592:	428a      	cmp	r2, r1
    2594:	d80e      	bhi.n	25b4 <app_Process+0xac>
			control.joy[1].updated = pdTRUE;
    2596:	f893 2178 	ldrb.w	r2, [r3, #376]	; 0x178
			control.joy[1].pos+=STEP;
			lcd_printf("FRONT: %d", control.joy[1].pos);
    259a:	489b      	ldr	r0, [pc, #620]	; (2808 <app_Process+0x300>)
	tParServo* parServo;
	switch (buttons) {
	case joypsKEY_UP:
		parServo = (tParServo*)control.servo[1].par;
		if (control.joy[1].pos+STEP <= (uint)parServo->max) {
			control.joy[1].updated = pdTRUE;
    259c:	f042 0201 	orr.w	r2, r2, #1
    25a0:	f883 2178 	strb.w	r2, [r3, #376]	; 0x178
			control.joy[1].pos+=STEP;
    25a4:	f8d3 217c 	ldr.w	r2, [r3, #380]	; 0x17c
    25a8:	320a      	adds	r2, #10
    25aa:	f8c3 217c 	str.w	r2, [r3, #380]	; 0x17c
			lcd_printf("FRONT: %d", control.joy[1].pos);
    25ae:	f8d3 117c 	ldr.w	r1, [r3, #380]	; 0x17c
    25b2:	e0f1      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("FRONT: %d END", control.joy[1].pos);
    25b4:	f8d3 117c 	ldr.w	r1, [r3, #380]	; 0x17c
    25b8:	4894      	ldr	r0, [pc, #592]	; (280c <app_Process+0x304>)
    25ba:	e0ed      	b.n	2798 <app_Process+0x290>
		break;
	case joypsKEY_DOWN:
		parServo = (tParServo*)control.servo[1].par;
		if (control.joy[1].pos-STEP >= (uint)parServo->min) {
    25bc:	4b91      	ldr	r3, [pc, #580]	; (2804 <app_Process+0x2fc>)
    25be:	f8d3 217c 	ldr.w	r2, [r3, #380]	; 0x17c
    25c2:	f8d3 10d4 	ldr.w	r1, [r3, #212]	; 0xd4
    25c6:	3a0a      	subs	r2, #10
    25c8:	428a      	cmp	r2, r1
    25ca:	d30e      	bcc.n	25ea <app_Process+0xe2>
			control.joy[1].updated = pdTRUE;
    25cc:	f893 2178 	ldrb.w	r2, [r3, #376]	; 0x178
			control.joy[1].pos-=STEP;
			lcd_printf("BACK: %d", control.joy[1].pos);
    25d0:	488f      	ldr	r0, [pc, #572]	; (2810 <app_Process+0x308>)
		} else lcd_printf("FRONT: %d END", control.joy[1].pos);
		break;
	case joypsKEY_DOWN:
		parServo = (tParServo*)control.servo[1].par;
		if (control.joy[1].pos-STEP >= (uint)parServo->min) {
			control.joy[1].updated = pdTRUE;
    25d2:	f042 0201 	orr.w	r2, r2, #1
    25d6:	f883 2178 	strb.w	r2, [r3, #376]	; 0x178
			control.joy[1].pos-=STEP;
    25da:	f8d3 217c 	ldr.w	r2, [r3, #380]	; 0x17c
    25de:	3a0a      	subs	r2, #10
    25e0:	f8c3 217c 	str.w	r2, [r3, #380]	; 0x17c
			lcd_printf("BACK: %d", control.joy[1].pos);
    25e4:	f8d3 117c 	ldr.w	r1, [r3, #380]	; 0x17c
    25e8:	e0d6      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("BACK: %d END", control.joy[1].pos);
    25ea:	f8d3 117c 	ldr.w	r1, [r3, #380]	; 0x17c
    25ee:	4889      	ldr	r0, [pc, #548]	; (2814 <app_Process+0x30c>)
    25f0:	e0d2      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_LEFT:
		parServo = (tParServo*)control.servo[0].par;
		if (control.joy[0].pos+STEP <= (uint)parServo->max) {
    25f2:	4b84      	ldr	r3, [pc, #528]	; (2804 <app_Process+0x2fc>)
    25f4:	f8d3 2174 	ldr.w	r2, [r3, #372]	; 0x174
    25f8:	f8d3 10bc 	ldr.w	r1, [r3, #188]	; 0xbc
    25fc:	320a      	adds	r2, #10
    25fe:	428a      	cmp	r2, r1
    2600:	d80e      	bhi.n	2620 <app_Process+0x118>
			control.joy[0].updated = pdTRUE;
    2602:	f893 2170 	ldrb.w	r2, [r3, #368]	; 0x170
			control.joy[0].pos+=STEP;
			lcd_printf("RIGHT: %d", control.joy[0].pos);
    2606:	4884      	ldr	r0, [pc, #528]	; (2818 <app_Process+0x310>)
		break;

	case joypsKEY_LEFT:
		parServo = (tParServo*)control.servo[0].par;
		if (control.joy[0].pos+STEP <= (uint)parServo->max) {
			control.joy[0].updated = pdTRUE;
    2608:	f042 0201 	orr.w	r2, r2, #1
    260c:	f883 2170 	strb.w	r2, [r3, #368]	; 0x170
			control.joy[0].pos+=STEP;
    2610:	f8d3 2174 	ldr.w	r2, [r3, #372]	; 0x174
    2614:	320a      	adds	r2, #10
    2616:	f8c3 2174 	str.w	r2, [r3, #372]	; 0x174
			lcd_printf("RIGHT: %d", control.joy[0].pos);
    261a:	f8d3 1174 	ldr.w	r1, [r3, #372]	; 0x174
    261e:	e0bb      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("RIGHT: %d END", control.joy[0].pos);
    2620:	f8d3 1174 	ldr.w	r1, [r3, #372]	; 0x174
    2624:	487d      	ldr	r0, [pc, #500]	; (281c <app_Process+0x314>)
    2626:	e0b7      	b.n	2798 <app_Process+0x290>
		break;
	case joypsKEY_RIGHT:
		parServo = (tParServo*)control.servo[0].par;
		if (control.joy[0].pos-STEP >= (uint)parServo->min) {
    2628:	4b76      	ldr	r3, [pc, #472]	; (2804 <app_Process+0x2fc>)
    262a:	f8d3 2174 	ldr.w	r2, [r3, #372]	; 0x174
    262e:	f8d3 10b8 	ldr.w	r1, [r3, #184]	; 0xb8
    2632:	3a0a      	subs	r2, #10
    2634:	428a      	cmp	r2, r1
    2636:	d30e      	bcc.n	2656 <app_Process+0x14e>
			control.joy[0].updated = pdTRUE;
    2638:	f893 2170 	ldrb.w	r2, [r3, #368]	; 0x170
			control.joy[0].pos-=STEP;
			lcd_printf("LEFT: %d", control.joy[0].pos);
    263c:	4878      	ldr	r0, [pc, #480]	; (2820 <app_Process+0x318>)
		} else lcd_printf("RIGHT: %d END", control.joy[0].pos);
		break;
	case joypsKEY_RIGHT:
		parServo = (tParServo*)control.servo[0].par;
		if (control.joy[0].pos-STEP >= (uint)parServo->min) {
			control.joy[0].updated = pdTRUE;
    263e:	f042 0201 	orr.w	r2, r2, #1
    2642:	f883 2170 	strb.w	r2, [r3, #368]	; 0x170
			control.joy[0].pos-=STEP;
    2646:	f8d3 2174 	ldr.w	r2, [r3, #372]	; 0x174
    264a:	3a0a      	subs	r2, #10
    264c:	f8c3 2174 	str.w	r2, [r3, #372]	; 0x174
			lcd_printf("LEFT: %d", control.joy[0].pos);
    2650:	f8d3 1174 	ldr.w	r1, [r3, #372]	; 0x174
    2654:	e0a0      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("LEFT: %d END", control.joy[0].pos);
    2656:	f8d3 1174 	ldr.w	r1, [r3, #372]	; 0x174
    265a:	4872      	ldr	r0, [pc, #456]	; (2824 <app_Process+0x31c>)
    265c:	e09c      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_TRIANGLE:
		parServo = (tParServo*)control.servo[3].par;
		if (control.joy[3].pos+STEP <= (uint)parServo->max) {
    265e:	4b69      	ldr	r3, [pc, #420]	; (2804 <app_Process+0x2fc>)
    2660:	f8d3 218c 	ldr.w	r2, [r3, #396]	; 0x18c
    2664:	f8d3 1110 	ldr.w	r1, [r3, #272]	; 0x110
    2668:	320a      	adds	r2, #10
    266a:	428a      	cmp	r2, r1
    266c:	d80e      	bhi.n	268c <app_Process+0x184>
			control.joy[3].updated = pdTRUE;
    266e:	f893 2188 	ldrb.w	r2, [r3, #392]	; 0x188
			control.joy[3].pos+=STEP;
			lcd_printf("UP: %d", control.joy[3].pos);
    2672:	486d      	ldr	r0, [pc, #436]	; (2828 <app_Process+0x320>)
		break;

	case joypsKEY_TRIANGLE:
		parServo = (tParServo*)control.servo[3].par;
		if (control.joy[3].pos+STEP <= (uint)parServo->max) {
			control.joy[3].updated = pdTRUE;
    2674:	f042 0201 	orr.w	r2, r2, #1
    2678:	f883 2188 	strb.w	r2, [r3, #392]	; 0x188
			control.joy[3].pos+=STEP;
    267c:	f8d3 218c 	ldr.w	r2, [r3, #396]	; 0x18c
    2680:	320a      	adds	r2, #10
    2682:	f8c3 218c 	str.w	r2, [r3, #396]	; 0x18c
			lcd_printf("UP: %d", control.joy[3].pos);
    2686:	f8d3 118c 	ldr.w	r1, [r3, #396]	; 0x18c
    268a:	e085      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("UP: %d END", control.joy[3].pos);
    268c:	f8d3 118c 	ldr.w	r1, [r3, #396]	; 0x18c
    2690:	4866      	ldr	r0, [pc, #408]	; (282c <app_Process+0x324>)
    2692:	e081      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_X:
		parServo = (tParServo*)control.servo[3].par;
		if (control.joy[3].pos-STEP >= (uint)parServo->min) {
    2694:	4b5b      	ldr	r3, [pc, #364]	; (2804 <app_Process+0x2fc>)
    2696:	f8d3 218c 	ldr.w	r2, [r3, #396]	; 0x18c
    269a:	f8d3 110c 	ldr.w	r1, [r3, #268]	; 0x10c
    269e:	3a0a      	subs	r2, #10
    26a0:	428a      	cmp	r2, r1
    26a2:	d30e      	bcc.n	26c2 <app_Process+0x1ba>
			control.joy[3].updated = pdTRUE;
    26a4:	f893 2188 	ldrb.w	r2, [r3, #392]	; 0x188
			control.joy[3].pos-=STEP;
			lcd_printf("DOWN: %d", control.joy[3].pos);
    26a8:	4861      	ldr	r0, [pc, #388]	; (2830 <app_Process+0x328>)
		break;

	case joypsKEY_X:
		parServo = (tParServo*)control.servo[3].par;
		if (control.joy[3].pos-STEP >= (uint)parServo->min) {
			control.joy[3].updated = pdTRUE;
    26aa:	f042 0201 	orr.w	r2, r2, #1
    26ae:	f883 2188 	strb.w	r2, [r3, #392]	; 0x188
			control.joy[3].pos-=STEP;
    26b2:	f8d3 218c 	ldr.w	r2, [r3, #396]	; 0x18c
    26b6:	3a0a      	subs	r2, #10
    26b8:	f8c3 218c 	str.w	r2, [r3, #396]	; 0x18c
			lcd_printf("DOWN: %d", control.joy[3].pos);
    26bc:	f8d3 118c 	ldr.w	r1, [r3, #396]	; 0x18c
    26c0:	e06a      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("DOWN: %d END", control.joy[3].pos);
    26c2:	f8d3 118c 	ldr.w	r1, [r3, #396]	; 0x18c
    26c6:	485b      	ldr	r0, [pc, #364]	; (2834 <app_Process+0x32c>)
    26c8:	e066      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_CIRCLE:
		parServo = (tParServo*)control.servo[4].par;
		if (control.joy[4].pos+STEP <= (uint)parServo->max) {
    26ca:	4b4e      	ldr	r3, [pc, #312]	; (2804 <app_Process+0x2fc>)
    26cc:	f8d3 2194 	ldr.w	r2, [r3, #404]	; 0x194
    26d0:	f8d3 112c 	ldr.w	r1, [r3, #300]	; 0x12c
    26d4:	320a      	adds	r2, #10
    26d6:	428a      	cmp	r2, r1
    26d8:	d80e      	bhi.n	26f8 <app_Process+0x1f0>
			control.joy[4].updated = pdTRUE;
    26da:	f893 2190 	ldrb.w	r2, [r3, #400]	; 0x190
			control.joy[4].pos+=STEP;
			lcd_printf("UP2: %d", control.joy[4].pos);
    26de:	4856      	ldr	r0, [pc, #344]	; (2838 <app_Process+0x330>)
		break;

	case joypsKEY_CIRCLE:
		parServo = (tParServo*)control.servo[4].par;
		if (control.joy[4].pos+STEP <= (uint)parServo->max) {
			control.joy[4].updated = pdTRUE;
    26e0:	f042 0201 	orr.w	r2, r2, #1
    26e4:	f883 2190 	strb.w	r2, [r3, #400]	; 0x190
			control.joy[4].pos+=STEP;
    26e8:	f8d3 2194 	ldr.w	r2, [r3, #404]	; 0x194
    26ec:	320a      	adds	r2, #10
    26ee:	f8c3 2194 	str.w	r2, [r3, #404]	; 0x194
			lcd_printf("UP2: %d", control.joy[4].pos);
    26f2:	f8d3 1194 	ldr.w	r1, [r3, #404]	; 0x194
    26f6:	e04f      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("UP2: %d END", control.joy[4].pos);
    26f8:	f8d3 1194 	ldr.w	r1, [r3, #404]	; 0x194
    26fc:	484f      	ldr	r0, [pc, #316]	; (283c <app_Process+0x334>)
    26fe:	e04b      	b.n	2798 <app_Process+0x290>
		break;
	case joypsKEY_SQUARE:
		parServo = (tParServo*)control.servo[4].par;
		if (control.joy[4].pos-STEP >= (uint)parServo->min) {
    2700:	4b40      	ldr	r3, [pc, #256]	; (2804 <app_Process+0x2fc>)
    2702:	f8d3 2194 	ldr.w	r2, [r3, #404]	; 0x194
    2706:	f8d3 1128 	ldr.w	r1, [r3, #296]	; 0x128
    270a:	3a0a      	subs	r2, #10
    270c:	428a      	cmp	r2, r1
    270e:	d30e      	bcc.n	272e <app_Process+0x226>
			control.joy[4].updated = pdTRUE;
    2710:	f893 2190 	ldrb.w	r2, [r3, #400]	; 0x190
			control.joy[4].pos-=STEP;
			lcd_printf("DOWN2: %d", control.joy[4].pos);
    2714:	484a      	ldr	r0, [pc, #296]	; (2840 <app_Process+0x338>)
		} else lcd_printf("UP2: %d END", control.joy[4].pos);
		break;
	case joypsKEY_SQUARE:
		parServo = (tParServo*)control.servo[4].par;
		if (control.joy[4].pos-STEP >= (uint)parServo->min) {
			control.joy[4].updated = pdTRUE;
    2716:	f042 0201 	orr.w	r2, r2, #1
    271a:	f883 2190 	strb.w	r2, [r3, #400]	; 0x190
			control.joy[4].pos-=STEP;
    271e:	f8d3 2194 	ldr.w	r2, [r3, #404]	; 0x194
    2722:	3a0a      	subs	r2, #10
    2724:	f8c3 2194 	str.w	r2, [r3, #404]	; 0x194
			lcd_printf("DOWN2: %d", control.joy[4].pos);
    2728:	f8d3 1194 	ldr.w	r1, [r3, #404]	; 0x194
    272c:	e034      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("DOWN2: %d END", control.joy[4].pos);
    272e:	f8d3 1194 	ldr.w	r1, [r3, #404]	; 0x194
    2732:	4844      	ldr	r0, [pc, #272]	; (2844 <app_Process+0x33c>)
    2734:	e030      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_L1:
		parServo = (tParServo*)control.servo[5].par;
		if (control.joy[5].pos-STEP >= (uint)parServo->min) {
    2736:	4b33      	ldr	r3, [pc, #204]	; (2804 <app_Process+0x2fc>)
    2738:	f8d3 219c 	ldr.w	r2, [r3, #412]	; 0x19c
    273c:	f8d3 1144 	ldr.w	r1, [r3, #324]	; 0x144
    2740:	3a0a      	subs	r2, #10
    2742:	428a      	cmp	r2, r1
    2744:	d30e      	bcc.n	2764 <app_Process+0x25c>
			control.joy[5].updated = pdTRUE;
    2746:	f893 2198 	ldrb.w	r2, [r3, #408]	; 0x198
			control.joy[5].pos-=STEP;
			lcd_printf("WRIST R: %d", control.joy[5].pos);
    274a:	483f      	ldr	r0, [pc, #252]	; (2848 <app_Process+0x340>)
		break;

	case joypsKEY_L1:
		parServo = (tParServo*)control.servo[5].par;
		if (control.joy[5].pos-STEP >= (uint)parServo->min) {
			control.joy[5].updated = pdTRUE;
    274c:	f042 0201 	orr.w	r2, r2, #1
    2750:	f883 2198 	strb.w	r2, [r3, #408]	; 0x198
			control.joy[5].pos-=STEP;
    2754:	f8d3 219c 	ldr.w	r2, [r3, #412]	; 0x19c
    2758:	3a0a      	subs	r2, #10
    275a:	f8c3 219c 	str.w	r2, [r3, #412]	; 0x19c
			lcd_printf("WRIST R: %d", control.joy[5].pos);
    275e:	f8d3 119c 	ldr.w	r1, [r3, #412]	; 0x19c
    2762:	e019      	b.n	2798 <app_Process+0x290>
		} else lcd_printf("WRIST R: %d END", control.joy[5].pos);
    2764:	f8d3 119c 	ldr.w	r1, [r3, #412]	; 0x19c
    2768:	4838      	ldr	r0, [pc, #224]	; (284c <app_Process+0x344>)
    276a:	e015      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_R1:
		parServo = (tParServo*)control.servo[5].par;
		if (control.joy[5].pos+STEP <= (uint)parServo->max) {
    276c:	4b25      	ldr	r3, [pc, #148]	; (2804 <app_Process+0x2fc>)
    276e:	f8d3 219c 	ldr.w	r2, [r3, #412]	; 0x19c
    2772:	f8d3 1148 	ldr.w	r1, [r3, #328]	; 0x148
    2776:	320a      	adds	r2, #10
    2778:	428a      	cmp	r2, r1
    277a:	d812      	bhi.n	27a2 <app_Process+0x29a>
			control.joy[5].updated = pdTRUE;
    277c:	f893 2198 	ldrb.w	r2, [r3, #408]	; 0x198
			control.joy[5].pos+=STEP;
			lcd_printf("WRIST L: %d", control.joy[5].pos);
    2780:	4833      	ldr	r0, [pc, #204]	; (2850 <app_Process+0x348>)
		break;

	case joypsKEY_R1:
		parServo = (tParServo*)control.servo[5].par;
		if (control.joy[5].pos+STEP <= (uint)parServo->max) {
			control.joy[5].updated = pdTRUE;
    2782:	f042 0201 	orr.w	r2, r2, #1
    2786:	f883 2198 	strb.w	r2, [r3, #408]	; 0x198
			control.joy[5].pos+=STEP;
    278a:	f8d3 219c 	ldr.w	r2, [r3, #412]	; 0x19c
    278e:	320a      	adds	r2, #10
    2790:	f8c3 219c 	str.w	r2, [r3, #412]	; 0x19c
			lcd_printf("WRIST L: %d", control.joy[5].pos);
    2794:	f8d3 119c 	ldr.w	r1, [r3, #412]	; 0x19c
    2798:	f001 fd98 	bl	42cc <lcd_printf>
	control.ticks++; // Contador de ticks do sistema
}


// Aqui descre, ou chame, códigos que não controlam tempos ou que não sejam executados em tempo reguladores, pelo menos diretamente
void app_Process(void) {
    279c:	2300      	movs	r3, #0
	}

	uint x; for(x=0;x<SERVO_N_MODULE;x++) {
		// Como servo 3 espelho do servo 2, não vamos atualizar o servo 3, e o servo 7 é o controle da mão
		if ( (x==2) || (x==6) ) continue;
		if (control.joy[x].updated) {
    279e:	4c19      	ldr	r4, [pc, #100]	; (2804 <app_Process+0x2fc>)
    27a0:	e028      	b.n	27f4 <app_Process+0x2ec>
		parServo = (tParServo*)control.servo[5].par;
		if (control.joy[5].pos+STEP <= (uint)parServo->max) {
			control.joy[5].updated = pdTRUE;
			control.joy[5].pos+=STEP;
			lcd_printf("WRIST L: %d", control.joy[5].pos);
		} else lcd_printf("WRIST L: %d END", control.joy[5].pos);
    27a2:	f8d3 119c 	ldr.w	r1, [r3, #412]	; 0x19c
    27a6:	482b      	ldr	r0, [pc, #172]	; (2854 <app_Process+0x34c>)
    27a8:	e7f6      	b.n	2798 <app_Process+0x290>
		break;

	case joypsKEY_L2:
		servo_Hand(handOPEN);
    27aa:	2000      	movs	r0, #0
    27ac:	f000 fda6 	bl	32fc <servo_Hand>
		lcd_printf("HAND OPEN");
    27b0:	4829      	ldr	r0, [pc, #164]	; (2858 <app_Process+0x350>)
    27b2:	e005      	b.n	27c0 <app_Process+0x2b8>
		break;

	case joypsKEY_R2:
		servo_Hand(handCLOSE);
    27b4:	2001      	movs	r0, #1
    27b6:	f000 fda1 	bl	32fc <servo_Hand>
		lcd_printf("HAND CLOSE");
    27ba:	4828      	ldr	r0, [pc, #160]	; (285c <app_Process+0x354>)
    27bc:	e000      	b.n	27c0 <app_Process+0x2b8>
		break;

	case joypsKEY_SELECT:
		lcd_printf("Pressed SELECT");
    27be:	4828      	ldr	r0, [pc, #160]	; (2860 <app_Process+0x358>)
    27c0:	f001 fd84 	bl	42cc <lcd_printf>
		break;
    27c4:	e7ea      	b.n	279c <app_Process+0x294>

	case joypsKEY_START:
		servo_Parking();
    27c6:	f000 fda5 	bl	3314 <servo_Parking>
		break;
    27ca:	e7e7      	b.n	279c <app_Process+0x294>
	}

	uint x; for(x=0;x<SERVO_N_MODULE;x++) {
		// Como servo 3 espelho do servo 2, não vamos atualizar o servo 3, e o servo 7 é o controle da mão
		if ( (x==2) || (x==6) ) continue;
		if (control.joy[x].updated) {
    27cc:	332e      	adds	r3, #46	; 0x2e
    27ce:	f854 2033 	ldr.w	r2, [r4, r3, lsl #3]
    27d2:	07d2      	lsls	r2, r2, #31
    27d4:	d50b      	bpl.n	27ee <app_Process+0x2e6>
			control.joy[x].updated = pdFALSE;
    27d6:	f814 2033 	ldrb.w	r2, [r4, r3, lsl #3]
			servo_SetPos(x+1, control.joy[x].pos);
    27da:	4628      	mov	r0, r5

	uint x; for(x=0;x<SERVO_N_MODULE;x++) {
		// Como servo 3 espelho do servo 2, não vamos atualizar o servo 3, e o servo 7 é o controle da mão
		if ( (x==2) || (x==6) ) continue;
		if (control.joy[x].updated) {
			control.joy[x].updated = pdFALSE;
    27dc:	f36f 0200 	bfc	r2, #0, #1
    27e0:	f804 2033 	strb.w	r2, [r4, r3, lsl #3]
			servo_SetPos(x+1, control.joy[x].pos);
    27e4:	eb04 03c3 	add.w	r3, r4, r3, lsl #3
    27e8:	6859      	ldr	r1, [r3, #4]
    27ea:	f000 fd43 	bl	3274 <servo_SetPos>
	case joypsKEY_START:
		servo_Parking();
		break;
	}

	uint x; for(x=0;x<SERVO_N_MODULE;x++) {
    27ee:	2d07      	cmp	r5, #7
    27f0:	462b      	mov	r3, r5
    27f2:	d006      	beq.n	2802 <app_Process+0x2fa>
		// Como servo 3 espelho do servo 2, não vamos atualizar o servo 3, e o servo 7 é o controle da mão
		if ( (x==2) || (x==6) ) continue;
    27f4:	f023 0204 	bic.w	r2, r3, #4
    27f8:	2a02      	cmp	r2, #2
    27fa:	f103 0501 	add.w	r5, r3, #1
    27fe:	d1e5      	bne.n	27cc <app_Process+0x2c4>
    2800:	e7f5      	b.n	27ee <app_Process+0x2e6>
    2802:	bd38      	pop	{r3, r4, r5, pc}
    2804:	10000640 	.word	0x10000640
    2808:	00004c8b 	.word	0x00004c8b
    280c:	00004c95 	.word	0x00004c95
    2810:	00004ca3 	.word	0x00004ca3
    2814:	00004cac 	.word	0x00004cac
    2818:	00004cb9 	.word	0x00004cb9
    281c:	00004cc3 	.word	0x00004cc3
    2820:	00004cd1 	.word	0x00004cd1
    2824:	00004cda 	.word	0x00004cda
    2828:	00004ce7 	.word	0x00004ce7
    282c:	00004cee 	.word	0x00004cee
    2830:	00004cf9 	.word	0x00004cf9
    2834:	00004d02 	.word	0x00004d02
    2838:	00004d0f 	.word	0x00004d0f
    283c:	00004d17 	.word	0x00004d17
    2840:	00004d23 	.word	0x00004d23
    2844:	00004d2d 	.word	0x00004d2d
    2848:	00004d3b 	.word	0x00004d3b
    284c:	00004d47 	.word	0x00004d47
    2850:	00004d57 	.word	0x00004d57
    2854:	00004d63 	.word	0x00004d63
    2858:	00004d73 	.word	0x00004d73
    285c:	00004d7d 	.word	0x00004d7d
    2860:	00004d88 	.word	0x00004d88

Disassembly of section .text.flash_SaveLog:

00002864 <flash_SaveLog>:
	#endif

	return pdPASS;
}

static int flash_SaveLog(void) {
    2864:	b510      	push	{r4, lr}
	int x;
	u8 dataBuf[lenFLASH_LOG];
	tLogFlash* p = (tLogFlash*) dataBuf;

	for(x=0;x<lenFLASH_LOG;x++) dataBuf[x] = 0xFF;
    2866:	2300      	movs	r3, #0
	#endif

	return pdPASS;
}

static int flash_SaveLog(void) {
    2868:	b0c0      	sub	sp, #256	; 0x100
	int x;
	u8 dataBuf[lenFLASH_LOG];
	tLogFlash* p = (tLogFlash*) dataBuf;

	for(x=0;x<lenFLASH_LOG;x++) dataBuf[x] = 0xFF;
    286a:	22ff      	movs	r2, #255	; 0xff
    286c:	f80d 2003 	strb.w	r2, [sp, r3]
    2870:	3301      	adds	r3, #1
    2872:	f5b3 7f80 	cmp.w	r3, #256	; 0x100
    2876:	d1f9      	bne.n	286c <flash_SaveLog+0x8>

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(14,14) != pdPASS) return pdFAIL;
    2878:	210e      	movs	r1, #14
    287a:	4608      	mov	r0, r1
    287c:	f7ff f988 	bl	1b90 <iap_ClearSectors>
    2880:	2801      	cmp	r0, #1
    2882:	d120      	bne.n	28c6 <flash_SaveLog+0x62>
    2884:	466a      	mov	r2, sp

	tDataLog* pl = p->err;
	for(x=0;x<nLOG;x++) {
		pl->countTick = control.err[x].countTick;
    2886:	4c11      	ldr	r4, [pc, #68]	; (28cc <flash_SaveLog+0x68>)
    2888:	2300      	movs	r3, #0
    288a:	eb03 0183 	add.w	r1, r3, r3, lsl #2
    288e:	4421      	add	r1, r4
    2890:	f8d1 0005 	ldr.w	r0, [r1, #5]

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(14,14) != pdPASS) return pdFAIL;

	tDataLog* pl = p->err;
	for(x=0;x<nLOG;x++) {
    2894:	3301      	adds	r3, #1
		pl->countTick = control.err[x].countTick;
		pl->code = control.err[x].code;
    2896:	7a49      	ldrb	r1, [r1, #9]

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(14,14) != pdPASS) return pdFAIL;

	tDataLog* pl = p->err;
	for(x=0;x<nLOG;x++) {
    2898:	2b1e      	cmp	r3, #30
		pl->countTick = control.err[x].countTick;
    289a:	6010      	str	r0, [r2, #0]
		pl->code = control.err[x].code;
    289c:	7111      	strb	r1, [r2, #4]
		pl++;
    289e:	f102 0205 	add.w	r2, r2, #5

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(14,14) != pdPASS) return pdFAIL;

	tDataLog* pl = p->err;
	for(x=0;x<nLOG;x++) {
    28a2:	d1f2      	bne.n	288a <flash_SaveLog+0x26>
		pl->countTick = control.err[x].countTick;
		pl->code = control.err[x].code;
		pl++;
	}

	p->crc = crc16_MODBUS(dataBuf, (sizeof(tLogFlash))-2);
    28a4:	2196      	movs	r1, #150	; 0x96
    28a6:	4668      	mov	r0, sp
    28a8:	f000 fd77 	bl	339a <crc16_MODBUS>

	// gravar na FLASH. Somente aceita buffers de tamanhos de 256, 512, 1024 ou 4096 KB dependendo do setor
	if (iap_WriteSectors (0xe000, (u8*)dataBuf, lenFLASH_LOG) != pdPASS) return pdFAIL;
    28ac:	f44f 7280 	mov.w	r2, #256	; 0x100
		pl->countTick = control.err[x].countTick;
		pl->code = control.err[x].code;
		pl++;
	}

	p->crc = crc16_MODBUS(dataBuf, (sizeof(tLogFlash))-2);
    28b0:	f8ad 0096 	strh.w	r0, [sp, #150]	; 0x96

	// gravar na FLASH. Somente aceita buffers de tamanhos de 256, 512, 1024 ou 4096 KB dependendo do setor
	if (iap_WriteSectors (0xe000, (u8*)dataBuf, lenFLASH_LOG) != pdPASS) return pdFAIL;
    28b4:	4669      	mov	r1, sp
    28b6:	f44f 4060 	mov.w	r0, #57344	; 0xe000
    28ba:	f7ff f9bb 	bl	1c34 <iap_WriteSectors>
	tLogFlash* p = (tLogFlash*) dataBuf;

	for(x=0;x<lenFLASH_LOG;x++) dataBuf[x] = 0xFF;

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(14,14) != pdPASS) return pdFAIL;
    28be:	1e43      	subs	r3, r0, #1
    28c0:	4258      	negs	r0, r3
    28c2:	4158      	adcs	r0, r3
    28c4:	e000      	b.n	28c8 <flash_SaveLog+0x64>
    28c6:	2000      	movs	r0, #0

	// gravar na FLASH. Somente aceita buffers de tamanhos de 256, 512, 1024 ou 4096 KB dependendo do setor
	if (iap_WriteSectors (0xe000, (u8*)dataBuf, lenFLASH_LOG) != pdPASS) return pdFAIL;

	return pdPASS;
}
    28c8:	b040      	add	sp, #256	; 0x100
    28ca:	bd10      	pop	{r4, pc}
    28cc:	10000640 	.word	0x10000640

Disassembly of section .text.check_Values:

000028d0 <check_Values>:
#include "app.h"

// Checa se os dados lidos da FLASH estão corretos
int check_Values(void) {
    28d0:	b510      	push	{r4, lr}
	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;

		if ( (parServo->offset < minOFFSET_US) || (parServo->offset > maxOFFSET_US) ) return errSERVO_PAR_OFFSET;
		if ( (parServo->init < minSERVO_US) || (parServo->init > maxSERVO_US) ) return errSERVO_PAR_INIT;
    28d2:	f640 3254 	movw	r2, #2900	; 0xb54
int check_Values(void) {
	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;

		if ( (parServo->offset < minOFFSET_US) || (parServo->offset > maxOFFSET_US) ) return errSERVO_PAR_OFFSET;
    28d6:	f640 34b8 	movw	r4, #3000	; 0xbb8
    28da:	4b19      	ldr	r3, [pc, #100]	; (2940 <check_Values+0x70>)
    28dc:	f103 00c4 	add.w	r0, r3, #196	; 0xc4
    28e0:	f8d3 10b0 	ldr.w	r1, [r3, #176]	; 0xb0
    28e4:	f201 51dc 	addw	r1, r1, #1500	; 0x5dc
    28e8:	42a1      	cmp	r1, r4
    28ea:	d81d      	bhi.n	2928 <check_Values+0x58>
		if ( (parServo->init < minSERVO_US) || (parServo->init > maxSERVO_US) ) return errSERVO_PAR_INIT;
    28ec:	f8d3 10b4 	ldr.w	r1, [r3, #180]	; 0xb4
    28f0:	3964      	subs	r1, #100	; 0x64
    28f2:	4291      	cmp	r1, r2
    28f4:	d81a      	bhi.n	292c <check_Values+0x5c>
		if ( (parServo->min < minSERVO_US) || (parServo->min > maxSERVO_US) ) return errSERVO_PAR_MIM;
    28f6:	f8d3 10b8 	ldr.w	r1, [r3, #184]	; 0xb8
    28fa:	3964      	subs	r1, #100	; 0x64
    28fc:	4291      	cmp	r1, r2
    28fe:	d817      	bhi.n	2930 <check_Values+0x60>
		if ( (parServo->max < minSERVO_US) || (parServo->max > maxSERVO_US) ) return errSERVO_PAR_MAX;
    2900:	f8d3 10bc 	ldr.w	r1, [r3, #188]	; 0xbc
    2904:	3964      	subs	r1, #100	; 0x64
    2906:	4291      	cmp	r1, r2
    2908:	d814      	bhi.n	2934 <check_Values+0x64>
		if ( (parServo->timeProgress < minTIME_PROGRESS) || (parServo->timeProgress > maxTIME_PROGRESS) ) return errSERVO_PAR_TIME_PROGRESS;
    290a:	f8d3 10c4 	ldr.w	r1, [r3, #196]	; 0xc4
    290e:	f5b1 7ffa 	cmp.w	r1, #500	; 0x1f4
    2912:	d811      	bhi.n	2938 <check_Values+0x68>
		if ( (parServo->timeActiveOff < minTIME_OFF) || (parServo->timeActiveOff > maxTIME_OFF) ) return errSERVO_PAR_TIME_OFF;
    2914:	f8d3 10c0 	ldr.w	r1, [r3, #192]	; 0xc0
    2918:	f5b1 7ffa 	cmp.w	r1, #500	; 0x1f4
    291c:	d80e      	bhi.n	293c <check_Values+0x6c>
    291e:	331c      	adds	r3, #28
#include "app.h"

// Checa se os dados lidos da FLASH estão corretos
int check_Values(void) {
	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
    2920:	4283      	cmp	r3, r0
    2922:	d1dd      	bne.n	28e0 <check_Values+0x10>
		if ( (parServo->max < minSERVO_US) || (parServo->max > maxSERVO_US) ) return errSERVO_PAR_MAX;
		if ( (parServo->timeProgress < minTIME_PROGRESS) || (parServo->timeProgress > maxTIME_PROGRESS) ) return errSERVO_PAR_TIME_PROGRESS;
		if ( (parServo->timeActiveOff < minTIME_OFF) || (parServo->timeActiveOff > maxTIME_OFF) ) return errSERVO_PAR_TIME_OFF;
	}

	return pdOK;
    2924:	2001      	movs	r0, #1
    2926:	bd10      	pop	{r4, pc}
int check_Values(void) {
	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;

		if ( (parServo->offset < minOFFSET_US) || (parServo->offset > maxOFFSET_US) ) return errSERVO_PAR_OFFSET;
    2928:	2065      	movs	r0, #101	; 0x65
    292a:	bd10      	pop	{r4, pc}
		if ( (parServo->init < minSERVO_US) || (parServo->init > maxSERVO_US) ) return errSERVO_PAR_INIT;
    292c:	2066      	movs	r0, #102	; 0x66
    292e:	bd10      	pop	{r4, pc}
		if ( (parServo->min < minSERVO_US) || (parServo->min > maxSERVO_US) ) return errSERVO_PAR_MIM;
    2930:	2067      	movs	r0, #103	; 0x67
    2932:	bd10      	pop	{r4, pc}
		if ( (parServo->max < minSERVO_US) || (parServo->max > maxSERVO_US) ) return errSERVO_PAR_MAX;
    2934:	2068      	movs	r0, #104	; 0x68
    2936:	bd10      	pop	{r4, pc}
		if ( (parServo->timeProgress < minTIME_PROGRESS) || (parServo->timeProgress > maxTIME_PROGRESS) ) return errSERVO_PAR_TIME_PROGRESS;
    2938:	2069      	movs	r0, #105	; 0x69
    293a:	bd10      	pop	{r4, pc}
		if ( (parServo->timeActiveOff < minTIME_OFF) || (parServo->timeActiveOff > maxTIME_OFF) ) return errSERVO_PAR_TIME_OFF;
    293c:	206a      	movs	r0, #106	; 0x6a
	}

	return pdOK;
}
    293e:	bd10      	pop	{r4, pc}
    2940:	10000640 	.word	0x10000640

Disassembly of section .text.par_ValuesDefaults:

00002944 <par_ValuesDefaults>:

// ###########################################################################################
// VALORES PADRÕES
void par_ValuesDefaults(void) {
    2944:	b530      	push	{r4, r5, lr}
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		parServo->offset = 0;
		parServo->init = 1500;
		parServo->min = minSERVO_US;
		parServo->max = maxSERVO_US;
    2946:	f640 30b8 	movw	r0, #3000	; 0xbb8

	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		parServo->offset = 0;
		parServo->init = 1500;
    294a:	f240 55dc 	movw	r5, #1500	; 0x5dc
    294e:	4b0a      	ldr	r3, [pc, #40]	; (2978 <par_ValuesDefaults+0x34>)
	#endif

	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		parServo->offset = 0;
    2950:	2200      	movs	r2, #0
    2952:	f103 01c4 	add.w	r1, r3, #196	; 0xc4
		parServo->init = 1500;
		parServo->min = minSERVO_US;
    2956:	2464      	movs	r4, #100	; 0x64
	#endif

	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		parServo->offset = 0;
    2958:	f8c3 20b0 	str.w	r2, [r3, #176]	; 0xb0
		parServo->init = 1500;
    295c:	f8c3 50b4 	str.w	r5, [r3, #180]	; 0xb4
		parServo->min = minSERVO_US;
    2960:	f8c3 40b8 	str.w	r4, [r3, #184]	; 0xb8
		parServo->max = maxSERVO_US;
    2964:	f8c3 00bc 	str.w	r0, [r3, #188]	; 0xbc
		parServo->timeProgress = 0;
    2968:	f8c3 20c4 	str.w	r2, [r3, #196]	; 0xc4
		parServo->timeActiveOff = 0;
    296c:	f8c3 20c0 	str.w	r2, [r3, #192]	; 0xc0
    2970:	331c      	adds	r3, #28
	#if (LOG_APP == pdON)
	plog("ALL VALUE DEFAULT"CMD_TERMINATOR);
	#endif

	tParServo* parServo;
	int x; for(x=0;x<SERVO_N_MODULE;x++) {
    2972:	428b      	cmp	r3, r1
    2974:	d1f0      	bne.n	2958 <par_ValuesDefaults+0x14>
		parServo->min = minSERVO_US;
		parServo->max = maxSERVO_US;
		parServo->timeProgress = 0;
		parServo->timeActiveOff = 0;
	}
}
    2976:	bd30      	pop	{r4, r5, pc}
    2978:	10000640 	.word	0x10000640

Disassembly of section .text.flash_Save:

0000297c <flash_Save>:
	}
}

// Salvas dados de calibração no final da flash
#include "vic.h"
int flash_Save(void) {
    297c:	b570      	push	{r4, r5, r6, lr}
    297e:	f5ad 7d00 	sub.w	sp, sp, #512	; 0x200
	int x,y;
	u8 dataBuf[lenFLASH];
	tDataFlash* p = (tDataFlash*) dataBuf;

	irq_Disable(); 		// Desabilitar interrupções
    2982:	b672      	cpsid	i

	for(x=0;x<lenFLASH;x++) dataBuf[x] = 0xFF;
    2984:	2300      	movs	r3, #0
    2986:	22ff      	movs	r2, #255	; 0xff
    2988:	f80d 2003 	strb.w	r2, [sp, r3]
    298c:	3301      	adds	r3, #1
    298e:	f5b3 7f00 	cmp.w	r3, #512	; 0x200
    2992:	d1f9      	bne.n	2988 <flash_Save+0xc>

	// Antes de gravar na flash é preciso preparar o setor para gravação
	if (iap_ClearSectors(15,15) != pdPASS) return pdFAIL;
    2994:	210f      	movs	r1, #15
    2996:	4608      	mov	r0, r1
    2998:	f7ff f8fa 	bl	1b90 <iap_ClearSectors>
    299c:	2801      	cmp	r0, #1
    299e:	d001      	beq.n	29a4 <flash_Save+0x28>
    29a0:	2000      	movs	r0, #0
    29a2:	e028      	b.n	29f6 <flash_Save+0x7a>

	p->id = idFLASH;
    29a4:	4b15      	ldr	r3, [pc, #84]	; (29fc <flash_Save+0x80>)
    29a6:	4d16      	ldr	r5, [pc, #88]	; (2a00 <flash_Save+0x84>)
    29a8:	9300      	str	r3, [sp, #0]
    29aa:	aa06      	add	r2, sp, #24
	//p->par.offset1 = pPar->offset1;

	tParServo* pserv = p->parServo;
	s32* par;
	for(x=0;x<SERVO_N_MODULE;x++) {
    29ac:	2300      	movs	r3, #0
    29ae:	241c      	movs	r4, #28
    29b0:	fb04 5103 	mla	r1, r4, r3, r5
    29b4:	f1a2 0018 	sub.w	r0, r2, #24
    29b8:	31ac      	adds	r1, #172	; 0xac
		par = &pserv->offset;
		for(y=0;y<nPAR_SERVO;y++) *par++=control.servo[x].par[y];
    29ba:	f851 6f04 	ldr.w	r6, [r1, #4]!
    29be:	f840 6f04 	str.w	r6, [r0, #4]!
    29c2:	4282      	cmp	r2, r0
    29c4:	d1f9      	bne.n	29ba <flash_Save+0x3e>
	p->id = idFLASH;
	//p->par.offset1 = pPar->offset1;

	tParServo* pserv = p->parServo;
	s32* par;
	for(x=0;x<SERVO_N_MODULE;x++) {
    29c6:	3301      	adds	r3, #1
    29c8:	2b07      	cmp	r3, #7
    29ca:	f102 0218 	add.w	r2, r2, #24
    29ce:	d1ef      	bne.n	29b0 <flash_Save+0x34>
		par = &pserv->offset;
		for(y=0;y<nPAR_SERVO;y++) *par++=control.servo[x].par[y];
		pserv++;
	}

	p->crc = crc16_MODBUS(dataBuf, (sizeof(tDataFlash))-2);
    29d0:	21ac      	movs	r1, #172	; 0xac
    29d2:	4668      	mov	r0, sp
    29d4:	f000 fce1 	bl	339a <crc16_MODBUS>

	// gravar na FLASH. Somente aceita buffers de tamanhos de 256, 512, 1024 ou 4096 KB dependendo do setor
	if (iap_WriteSectors (0xf000, (u8*)dataBuf, lenFLASH) != pdPASS) return pdFAIL;
    29d8:	f44f 7200 	mov.w	r2, #512	; 0x200
		par = &pserv->offset;
		for(y=0;y<nPAR_SERVO;y++) *par++=control.servo[x].par[y];
		pserv++;
	}

	p->crc = crc16_MODBUS(dataBuf, (sizeof(tDataFlash))-2);
    29dc:	f8ad 00ac 	strh.w	r0, [sp, #172]	; 0xac

	// gravar na FLASH. Somente aceita buffers de tamanhos de 256, 512, 1024 ou 4096 KB dependendo do setor
	if (iap_WriteSectors (0xf000, (u8*)dataBuf, lenFLASH) != pdPASS) return pdFAIL;
    29e0:	4669      	mov	r1, sp
    29e2:	f44f 4070 	mov.w	r0, #61440	; 0xf000
    29e6:	f7ff f925 	bl	1c34 <iap_WriteSectors>
    29ea:	2801      	cmp	r0, #1
    29ec:	d1d8      	bne.n	29a0 <flash_Save+0x24>

	irq_Enable(); 	// Habilitar interrupções
    29ee:	b662      	cpsie	i
	control.ticks = 0; // Inicializa o ticks para que o relé seja atracado navamente caso se demorou muito para gravar na flash
    29f0:	4b03      	ldr	r3, [pc, #12]	; (2a00 <flash_Save+0x84>)
    29f2:	2200      	movs	r2, #0
    29f4:	601a      	str	r2, [r3, #0]
	#if (LOG_APP == pdON)
	plog("SAVE FLASH crc = %d"CMD_TERMINATOR, p->crc);
	#endif

	return pdPASS;
}
    29f6:	f50d 7d00 	add.w	sp, sp, #512	; 0x200
    29fa:	bd70      	pop	{r4, r5, r6, pc}
    29fc:	5a55a504 	.word	0x5a55a504
    2a00:	10000640 	.word	0x10000640

Disassembly of section .text.flash_Load:

00002a04 <flash_Load>:
// ###########################################################################################
// GERENCIAMENTO DE VALORES ARMAZENADOS NO FINAL DA FLASH DE PROGRAMA

// Lê valores de configurações na flash, caso não conter valores válidos, colocar valores padrões
// Também lê os logs de erros
void flash_Load(void) {
    2a04:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
	int x, y;
	tDataFlash* p = (tDataFlash*) (0xf000);
	tLogFlash* pLog = (tLogFlash*) (0xe000);
	// calcular o CRC da flash
	u16 crc = crc16_MODBUS(p, (sizeof(tDataFlash))-2);
    2a06:	21ac      	movs	r1, #172	; 0xac
    2a08:	f44f 4070 	mov.w	r0, #61440	; 0xf000
    2a0c:	f000 fcc5 	bl	339a <crc16_MODBUS>
    2a10:	4928      	ldr	r1, [pc, #160]	; (2ab4 <flash_Load+0xb0>)

	// carregar os logs de erro
	tDataLog* pl = pLog->err;
	for(x=0;x<nLOG;x++) {
    2a12:	2200      	movs	r2, #0
void flash_Load(void) {
	int x, y;
	tDataFlash* p = (tDataFlash*) (0xf000);
	tLogFlash* pLog = (tLogFlash*) (0xe000);
	// calcular o CRC da flash
	u16 crc = crc16_MODBUS(p, (sizeof(tDataFlash))-2);
    2a14:	4606      	mov	r6, r0
    2a16:	460c      	mov	r4, r1
	// carregar os logs de erro
	tDataLog* pl = pLog->err;
	for(x=0;x<nLOG;x++) {
		// se o os valores da flash forem inválidos  (ID) ou o código for 0xFF, não há erro gravados
		if (pl->code == 0xFF) {
			control.err[x].countTick = 0;
    2a18:	4610      	mov	r0, r2
	tLogFlash* pLog = (tLogFlash*) (0xe000);
	// calcular o CRC da flash
	u16 crc = crc16_MODBUS(p, (sizeof(tDataFlash))-2);

	// carregar os logs de erro
	tDataLog* pl = pLog->err;
    2a1a:	f44f 4560 	mov.w	r5, #57344	; 0xe000
	for(x=0;x<nLOG;x++) {
		// se o os valores da flash forem inválidos  (ID) ou o código for 0xFF, não há erro gravados
		if (pl->code == 0xFF) {
    2a1e:	792f      	ldrb	r7, [r5, #4]
    2a20:	0093      	lsls	r3, r2, #2
    2a22:	2fff      	cmp	r7, #255	; 0xff
    2a24:	d107      	bne.n	2a36 <flash_Load+0x32>
			control.err[x].countTick = 0;
    2a26:	4413      	add	r3, r2
    2a28:	4423      	add	r3, r4
    2a2a:	7158      	strb	r0, [r3, #5]
    2a2c:	7198      	strb	r0, [r3, #6]
    2a2e:	71d8      	strb	r0, [r3, #7]
    2a30:	7218      	strb	r0, [r3, #8]
			control.err[x].code = 0;
    2a32:	7248      	strb	r0, [r1, #9]
    2a34:	e006      	b.n	2a44 <flash_Load+0x40>
		} else {
			control.err[x].countTick = pl->countTick;
    2a36:	f8d5 e000 	ldr.w	lr, [r5]
    2a3a:	4413      	add	r3, r2
    2a3c:	4423      	add	r3, r4
    2a3e:	f8c3 e005 	str.w	lr, [r3, #5]
			control.err[x].code = pl->code;
    2a42:	724f      	strb	r7, [r1, #9]
	// calcular o CRC da flash
	u16 crc = crc16_MODBUS(p, (sizeof(tDataFlash))-2);

	// carregar os logs de erro
	tDataLog* pl = pLog->err;
	for(x=0;x<nLOG;x++) {
    2a44:	3201      	adds	r2, #1
    2a46:	2a1e      	cmp	r2, #30
			control.err[x].code = 0;
		} else {
			control.err[x].countTick = pl->countTick;
			control.err[x].code = pl->code;
		}
		pl++;
    2a48:	f105 0505 	add.w	r5, r5, #5
    2a4c:	f101 0105 	add.w	r1, r1, #5
	// calcular o CRC da flash
	u16 crc = crc16_MODBUS(p, (sizeof(tDataFlash))-2);

	// carregar os logs de erro
	tDataLog* pl = pLog->err;
	for(x=0;x<nLOG;x++) {
    2a50:	d1e5      	bne.n	2a1e <flash_Load+0x1a>
		}
		pl++;
	}

	// Se o ID está correto e CRC errado, é porque houve algum erro de hardware ou durante a gravação
	if ( (crc != p->crc) && (p->id == idFLASH) ) {
    2a52:	f44f 4370 	mov.w	r3, #61440	; 0xf000
    2a56:	f8b3 20ac 	ldrh.w	r2, [r3, #172]	; 0xac
    2a5a:	42b2      	cmp	r2, r6
    2a5c:	d006      	beq.n	2a6c <flash_Load+0x68>
    2a5e:	681a      	ldr	r2, [r3, #0]
    2a60:	4b15      	ldr	r3, [pc, #84]	; (2ab8 <flash_Load+0xb4>)
    2a62:	429a      	cmp	r2, r3
    2a64:	d102      	bne.n	2a6c <flash_Load+0x68>
		showVicError(errCRC_FLASH); // trava no loop sinalizando o erro
    2a66:	2064      	movs	r0, #100	; 0x64
    2a68:	f7ff fbdc 	bl	2224 <showVicError>
	// Se o CRC e o ID estão corretos vamos carregar todos os valores
	} if ( (crc == p->crc) && (p->id == idFLASH) )  {
    2a6c:	f44f 4370 	mov.w	r3, #61440	; 0xf000
    2a70:	f8b3 20ac 	ldrh.w	r2, [r3, #172]	; 0xac
    2a74:	42b2      	cmp	r2, r6
    2a76:	d116      	bne.n	2aa6 <flash_Load+0xa2>
    2a78:	681a      	ldr	r2, [r3, #0]
    2a7a:	4b0f      	ldr	r3, [pc, #60]	; (2ab8 <flash_Load+0xb4>)
    2a7c:	429a      	cmp	r2, r3
    2a7e:	d112      	bne.n	2aa6 <flash_Load+0xa2>
		#if (LOG_APP == pdON)
		plog("LOAD FLASH id:0x%x crc:%d"CMD_TERMINATOR, p->id, p->crc);
		#endif

		tParServo* pserv = p->parServo;
    2a80:	f24f 0304 	movw	r3, #61444	; 0xf004
    2a84:	2200      	movs	r2, #0
    2a86:	f102 01ac 	add.w	r1, r2, #172	; 0xac
    2a8a:	4421      	add	r1, r4
    2a8c:	f103 0018 	add.w	r0, r3, #24
		s32* par;
		for(x=0;x<SERVO_N_MODULE;x++) {
			par = &pserv->offset;
			for(y=0;y<nPAR_SERVO;y++) control.servo[x].par[y] = *par++;
    2a90:	f853 5b04 	ldr.w	r5, [r3], #4
    2a94:	4298      	cmp	r0, r3
    2a96:	f841 5f04 	str.w	r5, [r1, #4]!
    2a9a:	d1f9      	bne.n	2a90 <flash_Load+0x8c>
    2a9c:	321c      	adds	r2, #28
		plog("LOAD FLASH id:0x%x crc:%d"CMD_TERMINATOR, p->id, p->crc);
		#endif

		tParServo* pserv = p->parServo;
		s32* par;
		for(x=0;x<SERVO_N_MODULE;x++) {
    2a9e:	2ac4      	cmp	r2, #196	; 0xc4
    2aa0:	4603      	mov	r3, r0
    2aa2:	d1f0      	bne.n	2a86 <flash_Load+0x82>
    2aa4:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
			for(y=0;y<nPAR_SERVO;y++) control.servo[x].par[y] = *par++;
			pserv++;
		}
	} else {
		// Todos os parametros assumirem valores padrões
		par_ValuesDefaults();
    2aa6:	f7ff ff4d 	bl	2944 <par_ValuesDefaults>
		flash_Save();
	}
}
    2aaa:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
			pserv++;
		}
	} else {
		// Todos os parametros assumirem valores padrões
		par_ValuesDefaults();
		flash_Save();
    2aae:	f7ff bf65 	b.w	297c <flash_Save>
    2ab2:	bf00      	nop
    2ab4:	10000640 	.word	0x10000640
    2ab8:	5a55a504 	.word	0x5a55a504

Disassembly of section .text.flash_ClearLogError:

00002abc <flash_ClearLogError>:
	return pdPASS;
}

// limpa os logs de erro
int flash_ClearLogError(void) {
	uint x; for(x=0; x<nLOG;x++) {
    2abc:	2200      	movs	r2, #0
		control.err[x].countTick = 0;
    2abe:	4611      	mov	r1, r2
    2ac0:	4806      	ldr	r0, [pc, #24]	; (2adc <flash_ClearLogError+0x20>)
    2ac2:	eb02 0382 	add.w	r3, r2, r2, lsl #2
	return pdPASS;
}

// limpa os logs de erro
int flash_ClearLogError(void) {
	uint x; for(x=0; x<nLOG;x++) {
    2ac6:	3201      	adds	r2, #1
		control.err[x].countTick = 0;
    2ac8:	4403      	add	r3, r0
	return pdPASS;
}

// limpa os logs de erro
int flash_ClearLogError(void) {
	uint x; for(x=0; x<nLOG;x++) {
    2aca:	2a1e      	cmp	r2, #30
		control.err[x].countTick = 0;
    2acc:	7159      	strb	r1, [r3, #5]
    2ace:	7199      	strb	r1, [r3, #6]
    2ad0:	71d9      	strb	r1, [r3, #7]
    2ad2:	7219      	strb	r1, [r3, #8]
		control.err[x].code = 0;
    2ad4:	7259      	strb	r1, [r3, #9]
	return pdPASS;
}

// limpa os logs de erro
int flash_ClearLogError(void) {
	uint x; for(x=0; x<nLOG;x++) {
    2ad6:	d1f4      	bne.n	2ac2 <flash_ClearLogError+0x6>
		control.err[x].countTick = 0;
		control.err[x].code = 0;
	}

	return flash_SaveLog();
    2ad8:	f7ff bec4 	b.w	2864 <flash_SaveLog>
    2adc:	10000640 	.word	0x10000640

Disassembly of section .text.flash_SaveLogError:

00002ae0 <flash_SaveLogError>:
}

// salva o erro no primeiro slot disponivel. Salvar na posição da FLASH diferente dos parametros
int flash_SaveLogError(u32 countTicks, u8 n) {
    2ae0:	b430      	push	{r4, r5}
	int res = pdFALSE;

	// encontrar até um slot vazio, uma vez encontrado salva na flash e cai fora
	uint x; for(x=0; x<nLOG;x++)
		if (control.err[x].code == 0) {
    2ae2:	4c09      	ldr	r4, [pc, #36]	; (2b08 <flash_SaveLogError+0x28>)
// salva o erro no primeiro slot disponivel. Salvar na posição da FLASH diferente dos parametros
int flash_SaveLogError(u32 countTicks, u8 n) {
	int res = pdFALSE;

	// encontrar até um slot vazio, uma vez encontrado salva na flash e cai fora
	uint x; for(x=0; x<nLOG;x++)
    2ae4:	2300      	movs	r3, #0
		if (control.err[x].code == 0) {
    2ae6:	eb03 0283 	add.w	r2, r3, r3, lsl #2
    2aea:	4422      	add	r2, r4
    2aec:	7a55      	ldrb	r5, [r2, #9]
    2aee:	b92d      	cbnz	r5, 2afc <flash_SaveLogError+0x1c>
			control.err[x].countTick = countTicks;
			control.err[x].code = n;
    2af0:	7251      	strb	r1, [r2, #9]
	int res = pdFALSE;

	// encontrar até um slot vazio, uma vez encontrado salva na flash e cai fora
	uint x; for(x=0; x<nLOG;x++)
		if (control.err[x].code == 0) {
			control.err[x].countTick = countTicks;
    2af2:	f8c2 0005 	str.w	r0, [r2, #5]
			res = flash_SaveLog();
			break;
		}

	return res;
}
    2af6:	bc30      	pop	{r4, r5}
	// encontrar até um slot vazio, uma vez encontrado salva na flash e cai fora
	uint x; for(x=0; x<nLOG;x++)
		if (control.err[x].code == 0) {
			control.err[x].countTick = countTicks;
			control.err[x].code = n;
			res = flash_SaveLog();
    2af8:	f7ff beb4 	b.w	2864 <flash_SaveLog>
// salva o erro no primeiro slot disponivel. Salvar na posição da FLASH diferente dos parametros
int flash_SaveLogError(u32 countTicks, u8 n) {
	int res = pdFALSE;

	// encontrar até um slot vazio, uma vez encontrado salva na flash e cai fora
	uint x; for(x=0; x<nLOG;x++)
    2afc:	3301      	adds	r3, #1
    2afe:	2b1e      	cmp	r3, #30
    2b00:	d1f1      	bne.n	2ae6 <flash_SaveLogError+0x6>
			res = flash_SaveLog();
			break;
		}

	return res;
}
    2b02:	2000      	movs	r0, #0
    2b04:	bc30      	pop	{r4, r5}
    2b06:	4770      	bx	lr
    2b08:	10000640 	.word	0x10000640

Disassembly of section .text.prompt_ClearTicks:

00002b0c <prompt_ClearTicks>:

	return pdPASS;
}

static int prompt_ClearTicks(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	control.ticks = 0;
    2b0c:	4b02      	ldr	r3, [pc, #8]	; (2b18 <prompt_ClearTicks+0xc>)
    2b0e:	2200      	movs	r2, #0
    2b10:	601a      	str	r2, [r3, #0]
	return pdPASS;
}
    2b12:	2001      	movs	r0, #1
    2b14:	4770      	bx	lr
    2b16:	bf00      	nop
    2b18:	10000640 	.word	0x10000640

Disassembly of section .text.prompt_LogErrorShow:

00002b1c <prompt_LogErrorShow>:
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, minSERVO_US, maxSERVO_US);

	return pdPASS;
}

static int prompt_LogErrorShow (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
    2b1c:	b537      	push	{r0, r1, r2, r4, r5, lr}
	lprintf("ERROR SYSTEM"CMD_TERMINATOR);
    2b1e:	490f      	ldr	r1, [pc, #60]	; (2b5c <prompt_LogErrorShow+0x40>)
    2b20:	2001      	movs	r0, #1
    2b22:	f000 ff21 	bl	3968 <rprintf>
	uint x; for(x=0; x<nLOG;x++)
		if (control.err[x].code == 0) lprintf("   slot %d: error none"CMD_TERMINATOR, x);
    2b26:	4d0e      	ldr	r5, [pc, #56]	; (2b60 <prompt_LogErrorShow+0x44>)
	return pdPASS;
}

static int prompt_LogErrorShow (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	lprintf("ERROR SYSTEM"CMD_TERMINATOR);
	uint x; for(x=0; x<nLOG;x++)
    2b28:	2400      	movs	r4, #0
		if (control.err[x].code == 0) lprintf("   slot %d: error none"CMD_TERMINATOR, x);
    2b2a:	eb04 0284 	add.w	r2, r4, r4, lsl #2
    2b2e:	442a      	add	r2, r5
    2b30:	7a53      	ldrb	r3, [r2, #9]
    2b32:	b92b      	cbnz	r3, 2b40 <prompt_LogErrorShow+0x24>
    2b34:	4622      	mov	r2, r4
    2b36:	490b      	ldr	r1, [pc, #44]	; (2b64 <prompt_LogErrorShow+0x48>)
    2b38:	2001      	movs	r0, #1
    2b3a:	f000 ff15 	bl	3968 <rprintf>
    2b3e:	e007      	b.n	2b50 <prompt_LogErrorShow+0x34>
		else lprintf("   slot %d: error code: %d in count tick: %d"CMD_TERMINATOR, x, control.err[x].code, control.err[x].countTick);
    2b40:	f8d2 2005 	ldr.w	r2, [r2, #5]
    2b44:	4908      	ldr	r1, [pc, #32]	; (2b68 <prompt_LogErrorShow+0x4c>)
    2b46:	9200      	str	r2, [sp, #0]
    2b48:	2001      	movs	r0, #1
    2b4a:	4622      	mov	r2, r4
    2b4c:	f000 ff0c 	bl	3968 <rprintf>
	return pdPASS;
}

static int prompt_LogErrorShow (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	lprintf("ERROR SYSTEM"CMD_TERMINATOR);
	uint x; for(x=0; x<nLOG;x++)
    2b50:	3401      	adds	r4, #1
    2b52:	2c1e      	cmp	r4, #30
    2b54:	d1e9      	bne.n	2b2a <prompt_LogErrorShow+0xe>
		if (control.err[x].code == 0) lprintf("   slot %d: error none"CMD_TERMINATOR, x);
		else lprintf("   slot %d: error code: %d in count tick: %d"CMD_TERMINATOR, x, control.err[x].code, control.err[x].countTick);

	return pdPASS;
}
    2b56:	2001      	movs	r0, #1
    2b58:	b003      	add	sp, #12
    2b5a:	bd30      	pop	{r4, r5, pc}
    2b5c:	00004ed8 	.word	0x00004ed8
    2b60:	10000640 	.word	0x10000640
    2b64:	00004ee6 	.word	0x00004ee6
    2b68:	00004efe 	.word	0x00004efe

Disassembly of section .text.prompt_STS:

00002b6c <prompt_STS>:
	par_ValuesDefaults();
	flash_Save();
	return pdPASS;
}

static int prompt_STS(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
    2b6c:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
	lprintf(CMD_TERMINATOR);
    2b70:	4944      	ldr	r1, [pc, #272]	; (2c84 <prompt_STS+0x118>)
	par_ValuesDefaults();
	flash_Save();
	return pdPASS;
}

static int prompt_STS(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
    2b72:	b088      	sub	sp, #32
	lprintf(CMD_TERMINATOR);
    2b74:	2001      	movs	r0, #1
    2b76:	f000 fef7 	bl	3968 <rprintf>
	lprintf(CMD_TERMINATOR);
    2b7a:	4942      	ldr	r1, [pc, #264]	; (2c84 <prompt_STS+0x118>)
    2b7c:	2001      	movs	r0, #1
    2b7e:	f000 fef3 	bl	3968 <rprintf>
	lprintf("SYSTEM"CMD_TERMINATOR);
    2b82:	4941      	ldr	r1, [pc, #260]	; (2c88 <prompt_STS+0x11c>)
    2b84:	2001      	movs	r0, #1
    2b86:	f000 feef 	bl	3968 <rprintf>
	lprintf("    "PROGAM_NAME);
	lprintf("    ucLibc version "__VERSION CMD_TERMINATOR);
	lprintf("    count TICKS: %u"CMD_TERMINATOR, control.ticks);
    2b8a:	4c40      	ldr	r4, [pc, #256]	; (2c8c <prompt_STS+0x120>)

static int prompt_STS(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	lprintf(CMD_TERMINATOR);
	lprintf(CMD_TERMINATOR);
	lprintf("SYSTEM"CMD_TERMINATOR);
	lprintf("    "PROGAM_NAME);
    2b8c:	4940      	ldr	r1, [pc, #256]	; (2c90 <prompt_STS+0x124>)
    2b8e:	2001      	movs	r0, #1
    2b90:	f000 feea 	bl	3968 <rprintf>
	lprintf("    ucLibc version "__VERSION CMD_TERMINATOR);
    2b94:	493f      	ldr	r1, [pc, #252]	; (2c94 <prompt_STS+0x128>)
    2b96:	2001      	movs	r0, #1
    2b98:	f000 fee6 	bl	3968 <rprintf>
	lprintf("    count TICKS: %u"CMD_TERMINATOR, control.ticks);
    2b9c:	6822      	ldr	r2, [r4, #0]
    2b9e:	493e      	ldr	r1, [pc, #248]	; (2c98 <prompt_STS+0x12c>)
    2ba0:	2001      	movs	r0, #1
    2ba2:	f000 fee1 	bl	3968 <rprintf>
	lprintf("    key pressing: %u"CMD_TERMINATOR, control.key);
    2ba6:	7922      	ldrb	r2, [r4, #4]
    2ba8:	493c      	ldr	r1, [pc, #240]	; (2c9c <prompt_STS+0x130>)
    2baa:	2001      	movs	r0, #1
    2bac:	f000 fedc 	bl	3968 <rprintf>
	lprintf(CMD_TERMINATOR);
    2bb0:	4934      	ldr	r1, [pc, #208]	; (2c84 <prompt_STS+0x118>)
    2bb2:	2001      	movs	r0, #1
    2bb4:	f000 fed8 	bl	3968 <rprintf>

	lprintf("SERVOS"CMD_TERMINATOR);
    2bb8:	4939      	ldr	r1, [pc, #228]	; (2ca0 <prompt_STS+0x134>)
    2bba:	2001      	movs	r0, #1
    2bbc:	f000 fed4 	bl	3968 <rprintf>
    2bc0:	4626      	mov	r6, r4
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		lprintf("    servo:%u en:%s pos:%04dus init:%04dus min:%04dus max:%04dus offset:%03d, tp:%02d, toff:%d"CMD_TERMINATOR,
    2bc2:	f8df 80f4 	ldr.w	r8, [pc, #244]	; 2cb8 <prompt_STS+0x14c>
    2bc6:	4f37      	ldr	r7, [pc, #220]	; (2ca4 <prompt_STS+0x138>)
	lprintf("    key pressing: %u"CMD_TERMINATOR, control.key);
	lprintf(CMD_TERMINATOR);

	lprintf("SERVOS"CMD_TERMINATOR);
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    2bc8:	2500      	movs	r5, #0
		parServo = (tParServo*)control.servo[x].par;
		lprintf("    servo:%u en:%s pos:%04dus init:%04dus min:%04dus max:%04dus offset:%03d, tp:%02d, toff:%d"CMD_TERMINATOR,
    2bca:	3501      	adds	r5, #1
    2bcc:	4628      	mov	r0, r5
    2bce:	f001 fd53 	bl	4678 <servus_Enabled>
    2bd2:	f8d4 30c0 	ldr.w	r3, [r4, #192]	; 0xc0
    2bd6:	462a      	mov	r2, r5
    2bd8:	9306      	str	r3, [sp, #24]
    2bda:	f8d4 30c4 	ldr.w	r3, [r4, #196]	; 0xc4
    2bde:	4932      	ldr	r1, [pc, #200]	; (2ca8 <prompt_STS+0x13c>)
    2be0:	9305      	str	r3, [sp, #20]
    2be2:	f8d4 30b0 	ldr.w	r3, [r4, #176]	; 0xb0
    2be6:	341c      	adds	r4, #28
    2be8:	9304      	str	r3, [sp, #16]
    2bea:	f8d4 30a0 	ldr.w	r3, [r4, #160]	; 0xa0
    2bee:	9303      	str	r3, [sp, #12]
    2bf0:	f8d4 309c 	ldr.w	r3, [r4, #156]	; 0x9c
    2bf4:	9302      	str	r3, [sp, #8]
    2bf6:	f8d4 3098 	ldr.w	r3, [r4, #152]	; 0x98
    2bfa:	9301      	str	r3, [sp, #4]
    2bfc:	f8d4 3090 	ldr.w	r3, [r4, #144]	; 0x90
    2c00:	9300      	str	r3, [sp, #0]
    2c02:	2800      	cmp	r0, #0
    2c04:	bf14      	ite	ne
    2c06:	4643      	movne	r3, r8
    2c08:	463b      	moveq	r3, r7
    2c0a:	2001      	movs	r0, #1
    2c0c:	f000 feac 	bl	3968 <rprintf>
	lprintf("    key pressing: %u"CMD_TERMINATOR, control.key);
	lprintf(CMD_TERMINATOR);

	lprintf("SERVOS"CMD_TERMINATOR);
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    2c10:	2d07      	cmp	r5, #7
    2c12:	d1da      	bne.n	2bca <prompt_STS+0x5e>
			parServo->offset,
			parServo->timeProgress,
			parServo->timeActiveOff
		);
	}
	lprintf(CMD_TERMINATOR);
    2c14:	491b      	ldr	r1, [pc, #108]	; (2c84 <prompt_STS+0x118>)
    2c16:	2001      	movs	r0, #1
    2c18:	f000 fea6 	bl	3968 <rprintf>

	lprintf("JOY SERVOS"CMD_TERMINATOR);
    2c1c:	4923      	ldr	r1, [pc, #140]	; (2cac <prompt_STS+0x140>)
    2c1e:	2001      	movs	r0, #1
    2c20:	f000 fea2 	bl	3968 <rprintf>
	for (x=0;x<SERVO_N_MODULE;x++) {
    2c24:	2300      	movs	r3, #0
		lprintf("    servo:%u pos:%04dus"CMD_TERMINATOR, x+1, control.joy[x].pos);
    2c26:	1c5c      	adds	r4, r3, #1
    2c28:	332e      	adds	r3, #46	; 0x2e
    2c2a:	eb06 03c3 	add.w	r3, r6, r3, lsl #3
    2c2e:	685b      	ldr	r3, [r3, #4]
    2c30:	4622      	mov	r2, r4
    2c32:	491f      	ldr	r1, [pc, #124]	; (2cb0 <prompt_STS+0x144>)
    2c34:	2001      	movs	r0, #1
    2c36:	f000 fe97 	bl	3968 <rprintf>
		);
	}
	lprintf(CMD_TERMINATOR);

	lprintf("JOY SERVOS"CMD_TERMINATOR);
	for (x=0;x<SERVO_N_MODULE;x++) {
    2c3a:	2c07      	cmp	r4, #7
    2c3c:	4623      	mov	r3, r4
    2c3e:	d1f2      	bne.n	2c26 <prompt_STS+0xba>
		lprintf("    servo:%u pos:%04dus"CMD_TERMINATOR, x+1, control.joy[x].pos);
	}
	lprintf(CMD_TERMINATOR);
    2c40:	4910      	ldr	r1, [pc, #64]	; (2c84 <prompt_STS+0x118>)
    2c42:	2001      	movs	r0, #1
    2c44:	f000 fe90 	bl	3968 <rprintf>

	for (x=700;x<2600;x+=10) {
    2c48:	f640 2528 	movw	r5, #2600	; 0xa28
    2c4c:	f44f 742f 	mov.w	r4, #700	; 0x2bc
		servus_SetPos(6, x);
    2c50:	4621      	mov	r1, r4
    2c52:	2006      	movs	r0, #6
    2c54:	f001 fce0 	bl	4618 <servus_SetPos>
	for (x=0;x<SERVO_N_MODULE;x++) {
		lprintf("    servo:%u pos:%04dus"CMD_TERMINATOR, x+1, control.joy[x].pos);
	}
	lprintf(CMD_TERMINATOR);

	for (x=700;x<2600;x+=10) {
    2c58:	340a      	adds	r4, #10
		servus_SetPos(6, x);
		delay_ms(10);
    2c5a:	4816      	ldr	r0, [pc, #88]	; (2cb4 <prompt_STS+0x148>)
    2c5c:	f7ff f884 	bl	1d68 <delay>
	for (x=0;x<SERVO_N_MODULE;x++) {
		lprintf("    servo:%u pos:%04dus"CMD_TERMINATOR, x+1, control.joy[x].pos);
	}
	lprintf(CMD_TERMINATOR);

	for (x=700;x<2600;x+=10) {
    2c60:	42ac      	cmp	r4, r5
    2c62:	d1f5      	bne.n	2c50 <prompt_STS+0xe4>
		servus_SetPos(6, x);
		delay_ms(10);
	}

	for (x=2600;x>700;x-=10) {
		servus_SetPos(6, x);
    2c64:	4621      	mov	r1, r4
    2c66:	2006      	movs	r0, #6
    2c68:	f001 fcd6 	bl	4618 <servus_SetPos>
	for (x=700;x<2600;x+=10) {
		servus_SetPos(6, x);
		delay_ms(10);
	}

	for (x=2600;x>700;x-=10) {
    2c6c:	3c0a      	subs	r4, #10
		servus_SetPos(6, x);
		delay_ms(10);
    2c6e:	4811      	ldr	r0, [pc, #68]	; (2cb4 <prompt_STS+0x148>)
    2c70:	f7ff f87a 	bl	1d68 <delay>
	for (x=700;x<2600;x+=10) {
		servus_SetPos(6, x);
		delay_ms(10);
	}

	for (x=2600;x>700;x-=10) {
    2c74:	f5b4 7f2f 	cmp.w	r4, #700	; 0x2bc
    2c78:	d1f4      	bne.n	2c64 <prompt_STS+0xf8>
		servus_SetPos(6, x);
		delay_ms(10);
	}

	return pdPASS;
}
    2c7a:	2001      	movs	r0, #1
    2c7c:	b008      	add	sp, #32
    2c7e:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    2c82:	bf00      	nop
    2c84:	00005474 	.word	0x00005474
    2c88:	00004ede 	.word	0x00004ede
    2c8c:	10000640 	.word	0x10000640
    2c90:	00004f34 	.word	0x00004f34
    2c94:	00004f78 	.word	0x00004f78
    2c98:	00004f90 	.word	0x00004f90
    2c9c:	00004fa5 	.word	0x00004fa5
    2ca0:	0000501e 	.word	0x0000501e
    2ca4:	00004f30 	.word	0x00004f30
    2ca8:	00004fbb 	.word	0x00004fbb
    2cac:	0000501a 	.word	0x0000501a
    2cb0:	00005026 	.word	0x00005026
    2cb4:	000514c8 	.word	0x000514c8
    2cb8:	00004f2c 	.word	0x00004f2c

Disassembly of section .text.prompt_Reconfig:

00002cbc <prompt_Reconfig>:
static int prompt_LogErrorClear (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	flash_ClearLogError();
	return pdPASS;
}

static int prompt_Reconfig (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
    2cbc:	b508      	push	{r3, lr}
	par_ValuesDefaults();
    2cbe:	f7ff fe41 	bl	2944 <par_ValuesDefaults>
	flash_Save();
    2cc2:	f7ff fe5b 	bl	297c <flash_Save>
	return pdPASS;
}
    2cc6:	2001      	movs	r0, #1
    2cc8:	bd08      	pop	{r3, pc}

Disassembly of section .text.prompt_LogErrorClear:

00002cca <prompt_LogErrorClear>:
		else lprintf("   slot %d: error code: %d in count tick: %d"CMD_TERMINATOR, x, control.err[x].code, control.err[x].countTick);

	return pdPASS;
}

static int prompt_LogErrorClear (int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
    2cca:	b508      	push	{r3, lr}
	flash_ClearLogError();
    2ccc:	f7ff fef6 	bl	2abc <flash_ClearLogError>
	return pdPASS;
}
    2cd0:	2001      	movs	r0, #1
    2cd2:	bd08      	pop	{r3, pc}

Disassembly of section .text.prompt_Hand:

00002cd4 <prompt_Hand>:
static int prompt_Park(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused)) ) {
	servo_Parking();
	return pdPASS;
}

static int prompt_Hand(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2cd4:	b508      	push	{r3, lr}
    2cd6:	460b      	mov	r3, r1
	if (strcmp(argv[0], "close") == 0) servo_Hand(handCLOSE); else servo_Hand(handOPEN);
    2cd8:	4905      	ldr	r1, [pc, #20]	; (2cf0 <prompt_Hand+0x1c>)
    2cda:	6818      	ldr	r0, [r3, #0]
    2cdc:	f7fe f9e6 	bl	10ac <strcmp>
    2ce0:	b908      	cbnz	r0, 2ce6 <prompt_Hand+0x12>
    2ce2:	2001      	movs	r0, #1
    2ce4:	e000      	b.n	2ce8 <prompt_Hand+0x14>
    2ce6:	2000      	movs	r0, #0
    2ce8:	f000 fb08 	bl	32fc <servo_Hand>

	return pdPASS;
}
    2cec:	2001      	movs	r0, #1
    2cee:	bd08      	pop	{r3, pc}
    2cf0:	0000503f 	.word	0x0000503f

Disassembly of section .text.prompt_Park:

00002cf4 <prompt_Park>:
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);

	return pdPASS;
}

static int prompt_Park(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused)) ) {
    2cf4:	b508      	push	{r3, lr}
	servo_Parking();
    2cf6:	f000 fb0d 	bl	3314 <servo_Parking>
	return pdPASS;
}
    2cfa:	2001      	movs	r0, #1
    2cfc:	bd08      	pop	{r3, pc}

Disassembly of section .text.prompt_ServoConfig:

00002d00 <prompt_ServoConfig>:

	return pdPASS;
}


static int prompt_ServoConfig(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2d00:	b510      	push	{r4, lr}
    2d02:	460c      	mov	r4, r1
    2d04:	b08c      	sub	sp, #48	; 0x30
	long p1, p2, p3, p4, p5, p6, p7;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2d06:	a905      	add	r1, sp, #20
    2d08:	4620      	mov	r0, r4
    2d0a:	f000 fed7 	bl	3abc <xatoi>
    2d0e:	b908      	cbnz	r0, 2d14 <prompt_ServoConfig+0x14>
    2d10:	2000      	movs	r0, #0
    2d12:	e047      	b.n	2da4 <prompt_ServoConfig+0xa4>
	if (!xatoi(&argv[1], &p2)) return pdFAIL;
    2d14:	a906      	add	r1, sp, #24
    2d16:	1d20      	adds	r0, r4, #4
    2d18:	f000 fed0 	bl	3abc <xatoi>
    2d1c:	2800      	cmp	r0, #0
    2d1e:	d0f7      	beq.n	2d10 <prompt_ServoConfig+0x10>
	if (!xatoi(&argv[2], &p3)) return pdFAIL;
    2d20:	a907      	add	r1, sp, #28
    2d22:	f104 0008 	add.w	r0, r4, #8
    2d26:	f000 fec9 	bl	3abc <xatoi>
    2d2a:	2800      	cmp	r0, #0
    2d2c:	d0f0      	beq.n	2d10 <prompt_ServoConfig+0x10>
	if (!xatoi(&argv[3], &p4)) return pdFAIL;
    2d2e:	a908      	add	r1, sp, #32
    2d30:	f104 000c 	add.w	r0, r4, #12
    2d34:	f000 fec2 	bl	3abc <xatoi>
    2d38:	2800      	cmp	r0, #0
    2d3a:	d0e9      	beq.n	2d10 <prompt_ServoConfig+0x10>
	if (!xatoi(&argv[4], &p5)) return pdFAIL;
    2d3c:	a909      	add	r1, sp, #36	; 0x24
    2d3e:	f104 0010 	add.w	r0, r4, #16
    2d42:	f000 febb 	bl	3abc <xatoi>
    2d46:	2800      	cmp	r0, #0
    2d48:	d0e2      	beq.n	2d10 <prompt_ServoConfig+0x10>
	if (!xatoi(&argv[5], &p6)) return pdFAIL;
    2d4a:	a90a      	add	r1, sp, #40	; 0x28
    2d4c:	f104 0014 	add.w	r0, r4, #20
    2d50:	f000 feb4 	bl	3abc <xatoi>
    2d54:	2800      	cmp	r0, #0
    2d56:	d0db      	beq.n	2d10 <prompt_ServoConfig+0x10>
	if (!xatoi(&argv[6], &p7)) return pdFAIL;
    2d58:	a90b      	add	r1, sp, #44	; 0x2c
    2d5a:	f104 0018 	add.w	r0, r4, #24
    2d5e:	f000 fead 	bl	3abc <xatoi>
    2d62:	2800      	cmp	r0, #0
    2d64:	d0d4      	beq.n	2d10 <prompt_ServoConfig+0x10>

	int ret = servo_Config(p1,p2,p3,p4,p5,p6,p7);
    2d66:	9b0b      	ldr	r3, [sp, #44]	; 0x2c
    2d68:	a805      	add	r0, sp, #20
    2d6a:	9302      	str	r3, [sp, #8]
    2d6c:	9b0a      	ldr	r3, [sp, #40]	; 0x28
    2d6e:	9301      	str	r3, [sp, #4]
    2d70:	9b09      	ldr	r3, [sp, #36]	; 0x24
    2d72:	9300      	str	r3, [sp, #0]
    2d74:	c80f      	ldmia	r0, {r0, r1, r2, r3}
    2d76:	f000 fa13 	bl	31a0 <servo_Config>
	if (ret == errDEVICE_NOT_FOUND)
    2d7a:	f510 7f96 	cmn.w	r0, #300	; 0x12c
    2d7e:	d105      	bne.n	2d8c <prompt_ServoConfig+0x8c>
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
    2d80:	2207      	movs	r2, #7
    2d82:	4909      	ldr	r1, [pc, #36]	; (2da8 <prompt_ServoConfig+0xa8>)
    2d84:	2001      	movs	r0, #1
    2d86:	f000 fdef 	bl	3968 <rprintf>
    2d8a:	e00a      	b.n	2da2 <prompt_ServoConfig+0xa2>
	else if (ret == errDEVICE_VALUE_INVALID)
    2d8c:	f46f 7397 	mvn.w	r3, #302	; 0x12e
    2d90:	4298      	cmp	r0, r3
    2d92:	d106      	bne.n	2da2 <prompt_ServoConfig+0xa2>
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, minSERVO_US, maxSERVO_US);
    2d94:	f640 33b8 	movw	r3, #3000	; 0xbb8
    2d98:	2264      	movs	r2, #100	; 0x64
    2d9a:	4904      	ldr	r1, [pc, #16]	; (2dac <prompt_ServoConfig+0xac>)
    2d9c:	2001      	movs	r0, #1
    2d9e:	f000 fde3 	bl	3968 <rprintf>

	return pdPASS;
    2da2:	2001      	movs	r0, #1
}
    2da4:	b00c      	add	sp, #48	; 0x30
    2da6:	bd10      	pop	{r4, pc}
    2da8:	00005045 	.word	0x00005045
    2dac:	00005063 	.word	0x00005063

Disassembly of section .text.prompt_Dump:

00002db0 <prompt_Dump>:
static int prompt_ClearTicks(int argc __attribute__ ((unused)), portCHAR **argv __attribute__ ((unused))) {
	control.ticks = 0;
	return pdPASS;
}

static int prompt_Dump (int argc __attribute__ ((unused)), portCHAR **argv ) {
    2db0:	b5f7      	push	{r0, r1, r2, r4, r5, r6, r7, lr}
    2db2:	460c      	mov	r4, r1
	long p1, p2;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2db4:	4669      	mov	r1, sp
    2db6:	4620      	mov	r0, r4
    2db8:	f000 fe80 	bl	3abc <xatoi>
    2dbc:	b908      	cbnz	r0, 2dc2 <prompt_Dump+0x12>
    2dbe:	2000      	movs	r0, #0
    2dc0:	e039      	b.n	2e36 <prompt_Dump+0x86>
	if (!xatoi(&argv[1], &p2)) return pdFAIL;
    2dc2:	a901      	add	r1, sp, #4
    2dc4:	1d20      	adds	r0, r4, #4
    2dc6:	f000 fe79 	bl	3abc <xatoi>
    2dca:	2800      	cmp	r0, #0
    2dcc:	d0f7      	beq.n	2dbe <prompt_Dump+0xe>

	if (p1 < 0) p1 = 0;
    2dce:	9b00      	ldr	r3, [sp, #0]
    2dd0:	2b00      	cmp	r3, #0
    2dd2:	bfbc      	itt	lt
    2dd4:	2300      	movlt	r3, #0
    2dd6:	9300      	strlt	r3, [sp, #0]
	if (p2 < 1) p2 = 256;
    2dd8:	9b01      	ldr	r3, [sp, #4]

	u8 *ptr = (u8*) p1;
    2dda:	9d00      	ldr	r5, [sp, #0]

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (!xatoi(&argv[1], &p2)) return pdFAIL;

	if (p1 < 0) p1 = 0;
	if (p2 < 1) p2 = 256;
    2ddc:	2b00      	cmp	r3, #0
    2dde:	bfdc      	itt	le
    2de0:	f44f 7380 	movle.w	r3, #256	; 0x100
    2de4:	9301      	strle	r3, [sp, #4]

	u8 *ptr = (u8*) p1;
	u16 qtd_rd = p2;
    2de6:	f8bd 4004 	ldrh.w	r4, [sp, #4]

	while (qtd_rd) {
    2dea:	b31c      	cbz	r4, 2e34 <prompt_Dump+0x84>
  		if (qtd_rd >= 16)
    2dec:	2c0f      	cmp	r4, #15
    2dee:	d91a      	bls.n	2e26 <prompt_Dump+0x76>
    2df0:	462e      	mov	r6, r5
    2df2:	192f      	adds	r7, r5, r4
    2df4:	b2bf      	uxth	r7, r7
  			// Enquanto o qtd_rd for maior que 15 faz, depois incrementea addr do buffer e da eeprom por 16, e decrementa qtd_rd por 16
  			for( ; qtd_rd>=16; ptr+=16, p1+=16, qtd_rd-=16 )
  				put_dump16(ptr, p1, 16, 16);
    2df6:	2310      	movs	r3, #16
    2df8:	461a      	mov	r2, r3
    2dfa:	4630      	mov	r0, r6
    2dfc:	9900      	ldr	r1, [sp, #0]
    2dfe:	f000 fe13 	bl	3a28 <put_dump16>
	u16 qtd_rd = p2;

	while (qtd_rd) {
  		if (qtd_rd >= 16)
  			// Enquanto o qtd_rd for maior que 15 faz, depois incrementea addr do buffer e da eeprom por 16, e decrementa qtd_rd por 16
  			for( ; qtd_rd>=16; ptr+=16, p1+=16, qtd_rd-=16 )
    2e02:	9b00      	ldr	r3, [sp, #0]
    2e04:	3610      	adds	r6, #16
    2e06:	3310      	adds	r3, #16
    2e08:	9300      	str	r3, [sp, #0]
    2e0a:	1bbb      	subs	r3, r7, r6
    2e0c:	b29b      	uxth	r3, r3
    2e0e:	2b0f      	cmp	r3, #15
    2e10:	d8f1      	bhi.n	2df6 <prompt_Dump+0x46>
    2e12:	f1a4 0310 	sub.w	r3, r4, #16
    2e16:	f3c3 130b 	ubfx	r3, r3, #4, #12
    2e1a:	3301      	adds	r3, #1
  				put_dump16(ptr, p1, 16, 16);

		if (qtd_rd)
    2e1c:	f014 040f 	ands.w	r4, r4, #15
    2e20:	eb05 1503 	add.w	r5, r5, r3, lsl #4
    2e24:	d006      	beq.n	2e34 <prompt_Dump+0x84>
			put_dump16(ptr, p1, qtd_rd, 16);
    2e26:	2310      	movs	r3, #16
    2e28:	4622      	mov	r2, r4
    2e2a:	9900      	ldr	r1, [sp, #0]
    2e2c:	4628      	mov	r0, r5
    2e2e:	f000 fdfb 	bl	3a28 <put_dump16>
    2e32:	e7da      	b.n	2dea <prompt_Dump+0x3a>
  	}

	return pdPASS;
    2e34:	2001      	movs	r0, #1
}
    2e36:	b003      	add	sp, #12
    2e38:	bdf0      	pop	{r4, r5, r6, r7, pc}

Disassembly of section .text.prompt_Beep:

00002e3a <prompt_Beep>:
  	} else result_prompt = pdPASS;

	return result_prompt;
}

static int prompt_Beep(int argc __attribute__ ((unused)), portCHAR **argv) {
    2e3a:	b507      	push	{r0, r1, r2, lr}
    2e3c:	4608      	mov	r0, r1
	long p1;
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2e3e:	a901      	add	r1, sp, #4
    2e40:	f000 fe3c 	bl	3abc <xatoi>
    2e44:	b118      	cbz	r0, 2e4e <prompt_Beep+0x14>
	beep_Play(p1);
    2e46:	9801      	ldr	r0, [sp, #4]
    2e48:	f000 ffaa 	bl	3da0 <beep_Play>
	return pdPASS;
    2e4c:	2001      	movs	r0, #1
}
    2e4e:	b003      	add	sp, #12
    2e50:	f85d fb04 	ldr.w	pc, [sp], #4

Disassembly of section .text.prompt_ServoEnable:

00002e54 <prompt_ServoEnable>:
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, parServo->min, parServo->max);

	return pdPASS;
}

static int prompt_ServoEnable(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2e54:	b513      	push	{r0, r1, r4, lr}
    2e56:	460c      	mov	r4, r1
	long p1=0, p2=pdOFF;
    2e58:	2300      	movs	r3, #0
    2e5a:	a902      	add	r1, sp, #8
    2e5c:	f841 3d04 	str.w	r3, [r1, #-4]!

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2e60:	4620      	mov	r0, r4
    2e62:	f000 fe2b 	bl	3abc <xatoi>
    2e66:	b190      	cbz	r0, 2e8e <prompt_ServoEnable+0x3a>
	if (strcmp(argv[1], "on") == 0) p2=pdON;
    2e68:	490a      	ldr	r1, [pc, #40]	; (2e94 <prompt_ServoEnable+0x40>)
    2e6a:	6860      	ldr	r0, [r4, #4]
    2e6c:	f7fe f91e 	bl	10ac <strcmp>

	int ret = servus_Enable(p1,p2);
    2e70:	fab0 f180 	clz	r1, r0
    2e74:	9801      	ldr	r0, [sp, #4]
    2e76:	0949      	lsrs	r1, r1, #5
    2e78:	f001 fbe8 	bl	464c <servus_Enable>

	if (ret == errDEVICE_NOT_FOUND)
    2e7c:	f510 7f96 	cmn.w	r0, #300	; 0x12c
    2e80:	d104      	bne.n	2e8c <prompt_ServoEnable+0x38>
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
    2e82:	2207      	movs	r2, #7
    2e84:	4904      	ldr	r1, [pc, #16]	; (2e98 <prompt_ServoEnable+0x44>)
    2e86:	2001      	movs	r0, #1
    2e88:	f000 fd6e 	bl	3968 <rprintf>

	return pdPASS;
    2e8c:	2001      	movs	r0, #1
}
    2e8e:	b002      	add	sp, #8
    2e90:	bd10      	pop	{r4, pc}
    2e92:	bf00      	nop
    2e94:	00004a2e 	.word	0x00004a2e
    2e98:	00005045 	.word	0x00005045

Disassembly of section .text.prompt_Servo:

00002e9c <prompt_Servo>:
  	}

	return pdPASS;
}

static int prompt_Servo(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2e9c:	b513      	push	{r0, r1, r4, lr}
    2e9e:	460c      	mov	r4, r1
	long p1=0, p2=0;
    2ea0:	2300      	movs	r3, #0

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2ea2:	4669      	mov	r1, sp
    2ea4:	4620      	mov	r0, r4

	return pdPASS;
}

static int prompt_Servo(int argc __attribute__ ((unused)), portCHAR **argv ) {
	long p1=0, p2=0;
    2ea6:	9300      	str	r3, [sp, #0]
    2ea8:	9301      	str	r3, [sp, #4]

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2eaa:	f000 fe07 	bl	3abc <xatoi>
    2eae:	b908      	cbnz	r0, 2eb4 <prompt_Servo+0x18>
    2eb0:	2000      	movs	r0, #0
    2eb2:	e024      	b.n	2efe <prompt_Servo+0x62>
	if (!xatoi(&argv[1], &p2)) return pdFAIL;
    2eb4:	a901      	add	r1, sp, #4
    2eb6:	1d20      	adds	r0, r4, #4
    2eb8:	f000 fe00 	bl	3abc <xatoi>
    2ebc:	2800      	cmp	r0, #0
    2ebe:	d0f7      	beq.n	2eb0 <prompt_Servo+0x14>

	int ret = servo_SetPos(p1,p2);
    2ec0:	e89d 0003 	ldmia.w	sp, {r0, r1}
    2ec4:	f000 f9d6 	bl	3274 <servo_SetPos>

	tParServo* parServo = (tParServo*)control.servo[p1-1].par;
	if (ret == errDEVICE_NOT_FOUND)
    2ec8:	f510 7f96 	cmn.w	r0, #300	; 0x12c
    2ecc:	d105      	bne.n	2eda <prompt_Servo+0x3e>
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
    2ece:	2207      	movs	r2, #7
    2ed0:	490c      	ldr	r1, [pc, #48]	; (2f04 <prompt_Servo+0x68>)
    2ed2:	2001      	movs	r0, #1
    2ed4:	f000 fd48 	bl	3968 <rprintf>
    2ed8:	e010      	b.n	2efc <prompt_Servo+0x60>
	else if ( (ret == errDEVICE_VALUE_OUT_OF_RANGE) || (ret == errDEVICE_VALUE_INVALID) )
    2eda:	f500 7098 	add.w	r0, r0, #304	; 0x130
    2ede:	2801      	cmp	r0, #1
    2ee0:	d80c      	bhi.n	2efc <prompt_Servo+0x60>
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (!xatoi(&argv[1], &p2)) return pdFAIL;

	int ret = servo_SetPos(p1,p2);

	tParServo* parServo = (tParServo*)control.servo[p1-1].par;
    2ee2:	9a00      	ldr	r2, [sp, #0]
    2ee4:	211c      	movs	r1, #28
    2ee6:	1e53      	subs	r3, r2, #1
    2ee8:	4a07      	ldr	r2, [pc, #28]	; (2f08 <prompt_Servo+0x6c>)
	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
	else if ( (ret == errDEVICE_VALUE_OUT_OF_RANGE) || (ret == errDEVICE_VALUE_INVALID) )
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, parServo->min, parServo->max);
    2eea:	2001      	movs	r0, #1
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (!xatoi(&argv[1], &p2)) return pdFAIL;

	int ret = servo_SetPos(p1,p2);

	tParServo* parServo = (tParServo*)control.servo[p1-1].par;
    2eec:	fb01 2203 	mla	r2, r1, r3, r2
	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
	else if ( (ret == errDEVICE_VALUE_OUT_OF_RANGE) || (ret == errDEVICE_VALUE_INVALID) )
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, parServo->min, parServo->max);
    2ef0:	6953      	ldr	r3, [r2, #20]
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (!xatoi(&argv[1], &p2)) return pdFAIL;

	int ret = servo_SetPos(p1,p2);

	tParServo* parServo = (tParServo*)control.servo[p1-1].par;
    2ef2:	3208      	adds	r2, #8
	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
	else if ( (ret == errDEVICE_VALUE_OUT_OF_RANGE) || (ret == errDEVICE_VALUE_INVALID) )
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, parServo->min, parServo->max);
    2ef4:	6892      	ldr	r2, [r2, #8]
    2ef6:	4905      	ldr	r1, [pc, #20]	; (2f0c <prompt_Servo+0x70>)
    2ef8:	f000 fd36 	bl	3968 <rprintf>

	return pdPASS;
    2efc:	2001      	movs	r0, #1
}
    2efe:	b002      	add	sp, #8
    2f00:	bd10      	pop	{r4, pc}
    2f02:	bf00      	nop
    2f04:	00005045 	.word	0x00005045
    2f08:	100006e8 	.word	0x100006e8
    2f0c:	00005063 	.word	0x00005063

Disassembly of section .text.prompt_Relay:

00002f10 <prompt_Relay>:
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	beep_Play(p1);
	return pdPASS;
}

static int prompt_Relay(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2f10:	b573      	push	{r0, r1, r4, r5, r6, lr}
    2f12:	460c      	mov	r4, r1
	long p1=0, p2=0, p3=0;
    2f14:	2300      	movs	r3, #0
	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	beep_Play(p1);
	return pdPASS;
}

static int prompt_Relay(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2f16:	4606      	mov	r6, r0
	long p1=0, p2=0, p3=0;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2f18:	4669      	mov	r1, sp
    2f1a:	4620      	mov	r0, r4
	beep_Play(p1);
	return pdPASS;
}

static int prompt_Relay(int argc __attribute__ ((unused)), portCHAR **argv ) {
	long p1=0, p2=0, p3=0;
    2f1c:	9300      	str	r3, [sp, #0]
    2f1e:	9301      	str	r3, [sp, #4]

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2f20:	f000 fdcc 	bl	3abc <xatoi>
    2f24:	b908      	cbnz	r0, 2f2a <prompt_Relay+0x1a>
    2f26:	2000      	movs	r0, #0
    2f28:	e020      	b.n	2f6c <prompt_Relay+0x5c>
	if (strcmp(argv[1], "on") == 0) p2=pdON; else p2=pdOFF;
    2f2a:	4911      	ldr	r1, [pc, #68]	; (2f70 <prompt_Relay+0x60>)
    2f2c:	6860      	ldr	r0, [r4, #4]
    2f2e:	f7fe f8bd 	bl	10ac <strcmp>
    2f32:	fab0 f580 	clz	r5, r0
	if (argc > 2) { if (!xatoi(&argv[2], &p3)) return pdFAIL; }
    2f36:	2e02      	cmp	r6, #2

static int prompt_Relay(int argc __attribute__ ((unused)), portCHAR **argv ) {
	long p1=0, p2=0, p3=0;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (strcmp(argv[1], "on") == 0) p2=pdON; else p2=pdOFF;
    2f38:	ea4f 1555 	mov.w	r5, r5, lsr #5
	if (argc > 2) { if (!xatoi(&argv[2], &p3)) return pdFAIL; }
    2f3c:	dc0d      	bgt.n	2f5a <prompt_Relay+0x4a>

	int ret = relay_Set(p1-1, p2, p3);
    2f3e:	9800      	ldr	r0, [sp, #0]
    2f40:	9a01      	ldr	r2, [sp, #4]
    2f42:	4629      	mov	r1, r5
    2f44:	3801      	subs	r0, #1
    2f46:	f000 f8d3 	bl	30f0 <relay_Set>

	if (ret == errDEVICE_NOT_FOUND)
    2f4a:	f510 7f96 	cmn.w	r0, #300	; 0x12c
    2f4e:	d10c      	bne.n	2f6a <prompt_Relay+0x5a>
		lprintf("ERROR: relay must be 1 or 2"CMD_TERMINATOR);
    2f50:	4908      	ldr	r1, [pc, #32]	; (2f74 <prompt_Relay+0x64>)
    2f52:	2001      	movs	r0, #1
    2f54:	f000 fd08 	bl	3968 <rprintf>
    2f58:	e007      	b.n	2f6a <prompt_Relay+0x5a>
static int prompt_Relay(int argc __attribute__ ((unused)), portCHAR **argv ) {
	long p1=0, p2=0, p3=0;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
	if (strcmp(argv[1], "on") == 0) p2=pdON; else p2=pdOFF;
	if (argc > 2) { if (!xatoi(&argv[2], &p3)) return pdFAIL; }
    2f5a:	a901      	add	r1, sp, #4
    2f5c:	f104 0008 	add.w	r0, r4, #8
    2f60:	f000 fdac 	bl	3abc <xatoi>
    2f64:	2800      	cmp	r0, #0
    2f66:	d1ea      	bne.n	2f3e <prompt_Relay+0x2e>
    2f68:	e7dd      	b.n	2f26 <prompt_Relay+0x16>

	int ret = relay_Set(p1-1, p2, p3);

	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: relay must be 1 or 2"CMD_TERMINATOR);
    2f6a:	2001      	movs	r0, #1

	return pdPASS;
}
    2f6c:	b002      	add	sp, #8
    2f6e:	bd70      	pop	{r4, r5, r6, pc}
    2f70:	00004a2e 	.word	0x00004a2e
    2f74:	0000509b 	.word	0x0000509b

Disassembly of section .text.prompt_ServoOffset:

00002f78 <prompt_ServoOffset>:
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, minSERVO_US, maxSERVO_US);

	return pdPASS;
}

static int prompt_ServoOffset(int argc __attribute__ ((unused)), portCHAR **argv ) {
    2f78:	b513      	push	{r0, r1, r4, lr}
    2f7a:	460c      	mov	r4, r1
	long p1, p2;

	if (!xatoi(&argv[0], &p1)) return pdFAIL;
    2f7c:	4669      	mov	r1, sp
    2f7e:	4620      	mov	r0, r4
    2f80:	f000 fd9c 	bl	3abc <xatoi>
    2f84:	b908      	cbnz	r0, 2f8a <prompt_ServoOffset+0x12>
    2f86:	2000      	movs	r0, #0
    2f88:	e01e      	b.n	2fc8 <prompt_ServoOffset+0x50>
	if (!xatoi(&argv[1], &p2)) return pdFAIL;
    2f8a:	a901      	add	r1, sp, #4
    2f8c:	1d20      	adds	r0, r4, #4
    2f8e:	f000 fd95 	bl	3abc <xatoi>
    2f92:	2800      	cmp	r0, #0
    2f94:	d0f7      	beq.n	2f86 <prompt_ServoOffset+0xe>

	int ret = servo_Offset(p1,p2);
    2f96:	e89d 0003 	ldmia.w	sp, {r0, r1}
    2f9a:	f000 f94b 	bl	3234 <servo_Offset>
	if (ret == errDEVICE_NOT_FOUND)
    2f9e:	f510 7f96 	cmn.w	r0, #300	; 0x12c
    2fa2:	d105      	bne.n	2fb0 <prompt_ServoOffset+0x38>

	int ret = servo_SetPos(p1,p2);

	tParServo* parServo = (tParServo*)control.servo[p1-1].par;
	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
    2fa4:	2207      	movs	r2, #7
    2fa6:	4909      	ldr	r1, [pc, #36]	; (2fcc <prompt_ServoOffset+0x54>)
    2fa8:	2001      	movs	r0, #1
    2faa:	f000 fcdd 	bl	3968 <rprintf>
    2fae:	e00a      	b.n	2fc6 <prompt_ServoOffset+0x4e>
	if (!xatoi(&argv[1], &p2)) return pdFAIL;

	int ret = servo_Offset(p1,p2);
	if (ret == errDEVICE_NOT_FOUND)
		lprintf("ERROR: Servo between 1 at %d"CMD_TERMINATOR, SERVO_N_MODULE);
	else if (ret == errDEVICE_VALUE_INVALID)
    2fb0:	f46f 7397 	mvn.w	r3, #302	; 0x12e
    2fb4:	4298      	cmp	r0, r3
    2fb6:	d106      	bne.n	2fc6 <prompt_ServoOffset+0x4e>
		lprintf("ERROR: Position out of range. Value should be %d at %d"CMD_TERMINATOR, minSERVO_US, maxSERVO_US);
    2fb8:	f640 33b8 	movw	r3, #3000	; 0xbb8
    2fbc:	2264      	movs	r2, #100	; 0x64
    2fbe:	4904      	ldr	r1, [pc, #16]	; (2fd0 <prompt_ServoOffset+0x58>)
    2fc0:	2001      	movs	r0, #1
    2fc2:	f000 fcd1 	bl	3968 <rprintf>

	return pdPASS;
    2fc6:	2001      	movs	r0, #1
}
    2fc8:	b002      	add	sp, #8
    2fca:	bd10      	pop	{r4, pc}
    2fcc:	00005045 	.word	0x00005045
    2fd0:	00005063 	.word	0x00005063

Disassembly of section .text.prompt_Process:

00002fd4 <prompt_Process>:
	{ NULL, 0,  0, CMD_TYPE_FUNCTION,  	{ NULL },
			NULL,
			NULL },
};

void prompt_Process(void) {
    2fd4:	b570      	push	{r4, r5, r6, lr}
static portCHAR *argv_prompt [CLI_N_ARGS];
static int argc_prompt;

static int prompt_ProcessCommand(void) {
	// CAPTURA COMANDOS DO TERMINAL. SE TECLOU ENTER A FUNÇÃO RETORNA COM A QUANTIDADE DE CHAR DO COMANDO
	result_prompt = cli_GetLine (buffer_prompt, sizeof (buffer_prompt), PROMPT); // Chamo o console para entrada de comandos
    2fd6:	4a18      	ldr	r2, [pc, #96]	; (3038 <prompt_Process+0x64>)
    2fd8:	2128      	movs	r1, #40	; 0x28
    2fda:	4818      	ldr	r0, [pc, #96]	; (303c <prompt_Process+0x68>)
    2fdc:	f000 ff38 	bl	3e50 <cli_GetLine>
    2fe0:	4c17      	ldr	r4, [pc, #92]	; (3040 <prompt_Process+0x6c>)
    2fe2:	6020      	str	r0, [r4, #0]

	// CHECA FOI ENTRADO COM O COMANDO
	if (result_prompt) {	// checa se há entrada de comandos
    2fe4:	b198      	cbz	r0, 300e <prompt_Process+0x3a>
   		if (cli_ArgsParse ((char *) buffer_prompt, argv_prompt, sizeof (argv_prompt), &argc_prompt) == errCLI_EXED_ARGS) // Captura os endereços iniciais de cada argumento, contidos no comando, e grava nas posições do argv
    2fe6:	4e17      	ldr	r6, [pc, #92]	; (3044 <prompt_Process+0x70>)
    2fe8:	4d17      	ldr	r5, [pc, #92]	; (3048 <prompt_Process+0x74>)
    2fea:	4633      	mov	r3, r6
    2fec:	2228      	movs	r2, #40	; 0x28
    2fee:	4629      	mov	r1, r5
    2ff0:	4812      	ldr	r0, [pc, #72]	; (303c <prompt_Process+0x68>)
    2ff2:	f000 fff3 	bl	3fdc <cli_ArgsParse>
    2ff6:	f110 0f3c 	cmn.w	r0, #60	; 0x3c
    2ffa:	d006      	beq.n	300a <prompt_Process+0x36>
   			result_prompt = errCLI_EXED_ARGS;
   		else if (argv_prompt[0])
    2ffc:	682b      	ldr	r3, [r5, #0]
    2ffe:	b143      	cbz	r3, 3012 <prompt_Process+0x3e>
   			result_prompt = cli_ArgsDispatch(cli_list, argc_prompt, &argv_prompt[0]);							// Executa a função referente ao comando digitado
    3000:	462a      	mov	r2, r5
    3002:	6831      	ldr	r1, [r6, #0]
    3004:	4811      	ldr	r0, [pc, #68]	; (304c <prompt_Process+0x78>)
    3006:	f001 f861 	bl	40cc <cli_ArgsDispatch>
    300a:	6020      	str	r0, [r4, #0]
    300c:	e001      	b.n	3012 <prompt_Process+0x3e>
  	} else result_prompt = pdPASS;
    300e:	2301      	movs	r3, #1
    3010:	6023      	str	r3, [r4, #0]
};

void prompt_Process(void) {
	static int resuslt;
	resuslt = prompt_ProcessCommand();
	switch (resuslt) {
    3012:	6823      	ldr	r3, [r4, #0]
    3014:	f113 0f3c 	cmn.w	r3, #60	; 0x3c
    3018:	d004      	beq.n	3024 <prompt_Process+0x50>
    301a:	b12b      	cbz	r3, 3028 <prompt_Process+0x54>
    301c:	333f      	adds	r3, #63	; 0x3f
    301e:	d109      	bne.n	3034 <prompt_Process+0x60>
	case errCLI_EXED_ARGS:
		lprintf("System error"CMD_TERMINATOR);
		break;
	case errCLI_CMD_NOT_FOUND:
		lprintf("Unknown command"CMD_TERMINATOR);
    3020:	490b      	ldr	r1, [pc, #44]	; (3050 <prompt_Process+0x7c>)
    3022:	e002      	b.n	302a <prompt_Process+0x56>
void prompt_Process(void) {
	static int resuslt;
	resuslt = prompt_ProcessCommand();
	switch (resuslt) {
	case errCLI_EXED_ARGS:
		lprintf("System error"CMD_TERMINATOR);
    3024:	490b      	ldr	r1, [pc, #44]	; (3054 <prompt_Process+0x80>)
    3026:	e000      	b.n	302a <prompt_Process+0x56>
		break;
	case errCLI_CMD_NOT_FOUND:
		lprintf("Unknown command"CMD_TERMINATOR);
    	break;
    case pdFAIL:
    	lprintf("Error in executing the command"CMD_TERMINATOR);
    3028:	490b      	ldr	r1, [pc, #44]	; (3058 <prompt_Process+0x84>)
    302a:	2001      	movs	r0, #1
    	break;
    }
}
    302c:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}
		break;
	case errCLI_CMD_NOT_FOUND:
		lprintf("Unknown command"CMD_TERMINATOR);
    	break;
    case pdFAIL:
    	lprintf("Error in executing the command"CMD_TERMINATOR);
    3030:	f000 bc9a 	b.w	3968 <rprintf>
    3034:	bd70      	pop	{r4, r5, r6, pc}
    3036:	bf00      	nop
    3038:	000050b8 	.word	0x000050b8
    303c:	100009c0 	.word	0x100009c0
    3040:	10000994 	.word	0x10000994
    3044:	10000990 	.word	0x10000990
    3048:	10000998 	.word	0x10000998
    304c:	00004d98 	.word	0x00004d98
    3050:	000050ca 	.word	0x000050ca
    3054:	000050bc 	.word	0x000050bc
    3058:	000050db 	.word	0x000050db

Disassembly of section .text.onKeyDown:

0000305c <onKeyDown>:
#include "app.h"

// #######################################################################################################
// KEYBOARD
// #######################################################################################################
void onKeyDown(char key) {
    305c:	b510      	push	{r4, lr}
    305e:	4604      	mov	r4, r0
	lprintf("onKeyDown key [0x%x]"CMD_TERMINATOR, key);
    3060:	4602      	mov	r2, r0
    3062:	490a      	ldr	r1, [pc, #40]	; (308c <onKeyDown+0x30>)
    3064:	2001      	movs	r0, #1
    3066:	f000 fc7f 	bl	3968 <rprintf>
	if (key == SW0) beep_Play(4);
    306a:	2c01      	cmp	r4, #1
    306c:	d101      	bne.n	3072 <onKeyDown+0x16>
    306e:	2004      	movs	r0, #4
    3070:	e006      	b.n	3080 <onKeyDown+0x24>
	else if (key == SW1) beep_Play(5);
    3072:	2c02      	cmp	r4, #2
    3074:	d101      	bne.n	307a <onKeyDown+0x1e>
    3076:	2005      	movs	r0, #5
    3078:	e002      	b.n	3080 <onKeyDown+0x24>
	else if (key == SW2) beep_Play(6);
    307a:	2c04      	cmp	r4, #4
    307c:	d104      	bne.n	3088 <onKeyDown+0x2c>
    307e:	2006      	movs	r0, #6
}
    3080:	e8bd 4010 	ldmia.w	sp!, {r4, lr}
// #######################################################################################################
void onKeyDown(char key) {
	lprintf("onKeyDown key [0x%x]"CMD_TERMINATOR, key);
	if (key == SW0) beep_Play(4);
	else if (key == SW1) beep_Play(5);
	else if (key == SW2) beep_Play(6);
    3084:	f000 be8c 	b.w	3da0 <beep_Play>
    3088:	bd10      	pop	{r4, pc}
    308a:	bf00      	nop
    308c:	0000541b 	.word	0x0000541b

Disassembly of section .text.onKeyPress:

00003090 <onKeyPress>:
}

void onKeyPress(char key __attribute__ ((unused)) ) {
	lprintf("onKeyPress key [0x%x] fastInc[%d] "CMD_TERMINATOR, key, gkey_FastInc);
    3090:	4b03      	ldr	r3, [pc, #12]	; (30a0 <onKeyPress+0x10>)
    3092:	4602      	mov	r2, r0
    3094:	681b      	ldr	r3, [r3, #0]
    3096:	4903      	ldr	r1, [pc, #12]	; (30a4 <onKeyPress+0x14>)
    3098:	2001      	movs	r0, #1
    309a:	f000 bc65 	b.w	3968 <rprintf>
    309e:	bf00      	nop
    30a0:	100007e8 	.word	0x100007e8
    30a4:	00005431 	.word	0x00005431

Disassembly of section .text.onKeyUp:

000030a8 <onKeyUp>:
}

void onKeyUp(char key __attribute__ ((unused)) ) {
	lprintf("onKeyUp key [0x%x] fastInc[%d] "CMD_TERMINATOR, key, gkey_FastInc);
    30a8:	4b03      	ldr	r3, [pc, #12]	; (30b8 <onKeyUp+0x10>)
    30aa:	4602      	mov	r2, r0
    30ac:	681b      	ldr	r3, [r3, #0]
    30ae:	4903      	ldr	r1, [pc, #12]	; (30bc <onKeyUp+0x14>)
    30b0:	2001      	movs	r0, #1
    30b2:	f000 bc59 	b.w	3968 <rprintf>
    30b6:	bf00      	nop
    30b8:	100007e8 	.word	0x100007e8
    30bc:	00005455 	.word	0x00005455

Disassembly of section .text.relay_Init:

000030c0 <relay_Init>:

// #######################################################################################################
// RELAYS
// #######################################################################################################
void relay_Init(void) {
	relay1_Init();
    30c0:	4b09      	ldr	r3, [pc, #36]	; (30e8 <relay_Init+0x28>)
    30c2:	681a      	ldr	r2, [r3, #0]
    30c4:	f042 4280 	orr.w	r2, r2, #1073741824	; 0x40000000
    30c8:	601a      	str	r2, [r3, #0]
	relay2_Init();
    30ca:	681a      	ldr	r2, [r3, #0]
    30cc:	f042 4200 	orr.w	r2, r2, #2147483648	; 0x80000000
    30d0:	601a      	str	r2, [r3, #0]

	control.relay1.st = 0;
    30d2:	4b06      	ldr	r3, [pc, #24]	; (30ec <relay_Init+0x2c>)
    30d4:	2200      	movs	r2, #0
	control.relay1.timeout = 0;
    30d6:	f8c3 20a0 	str.w	r2, [r3, #160]	; 0xa0
// #######################################################################################################
void relay_Init(void) {
	relay1_Init();
	relay2_Init();

	control.relay1.st = 0;
    30da:	f8c3 209c 	str.w	r2, [r3, #156]	; 0x9c
	control.relay1.timeout = 0;

	control.relay2.st = 0;
    30de:	f8c3 20a4 	str.w	r2, [r3, #164]	; 0xa4
	control.relay2.timeout = 0;
    30e2:	f8c3 20a8 	str.w	r2, [r3, #168]	; 0xa8
    30e6:	4770      	bx	lr
    30e8:	2009c020 	.word	0x2009c020
    30ec:	10000640 	.word	0x10000640

Disassembly of section .text.relay_Set:

000030f0 <relay_Set>:
//	parametro timeout: O tempo em segundos que o rele vai ficar no estado atual e voltar para o estado inverso
//		Se colocar valor 0, permanece no estado atual até o próximo comando
int relay_Set(int rly, int st, uint timeout) {
	pRelay rl;

	if ( (rly < 0) || (rly > 1) ) return errDEVICE_NOT_FOUND;
    30f0:	2801      	cmp	r0, #1
// Liga ou desliga o rele
//	parametro rly: sinaliza qual o rele vamos acessar. valor 0 ou 1
//	parametro st: pdON liga o rele e pdOFF desliga o rele;
//	parametro timeout: O tempo em segundos que o rele vai ficar no estado atual e voltar para o estado inverso
//		Se colocar valor 0, permanece no estado atual até o próximo comando
int relay_Set(int rly, int st, uint timeout) {
    30f2:	b510      	push	{r4, lr}
	pRelay rl;

	if ( (rly < 0) || (rly > 1) ) return errDEVICE_NOT_FOUND;
    30f4:	d80d      	bhi.n	3112 <relay_Set+0x22>
	if (rly == 0) rl = &control.relay1; else rl = &control.relay2;
    30f6:	4b08      	ldr	r3, [pc, #32]	; (3118 <relay_Set+0x28>)
    30f8:	f103 0408 	add.w	r4, r3, #8
    30fc:	2800      	cmp	r0, #0
    30fe:	bf0c      	ite	eq
    3100:	4618      	moveq	r0, r3
    3102:	4620      	movne	r0, r4

	rl->timeout = timeout*1000;
    3104:	f44f 737a 	mov.w	r3, #1000	; 0x3e8
    3108:	435a      	muls	r2, r3
	rl->st = st;
    310a:	6001      	str	r1, [r0, #0]
	pRelay rl;

	if ( (rly < 0) || (rly > 1) ) return errDEVICE_NOT_FOUND;
	if (rly == 0) rl = &control.relay1; else rl = &control.relay2;

	rl->timeout = timeout*1000;
    310c:	6042      	str	r2, [r0, #4]
	rl->st = st;

	return pdPASS;
    310e:	2001      	movs	r0, #1
    3110:	bd10      	pop	{r4, pc}
//	parametro timeout: O tempo em segundos que o rele vai ficar no estado atual e voltar para o estado inverso
//		Se colocar valor 0, permanece no estado atual até o próximo comando
int relay_Set(int rly, int st, uint timeout) {
	pRelay rl;

	if ( (rly < 0) || (rly > 1) ) return errDEVICE_NOT_FOUND;
    3112:	4802      	ldr	r0, [pc, #8]	; (311c <relay_Set+0x2c>)

	rl->timeout = timeout*1000;
	rl->st = st;

	return pdPASS;
}
    3114:	bd10      	pop	{r4, pc}
    3116:	bf00      	nop
    3118:	100006dc 	.word	0x100006dc
    311c:	fffffed4 	.word	0xfffffed4

Disassembly of section .text.relay_Tick:

00003120 <relay_Tick>:

void relay_Tick(void) {
	if (control.relay1.st) relay1_On(); else relay1_Off();
    3120:	4b1c      	ldr	r3, [pc, #112]	; (3194 <relay_Tick+0x74>)
	rl->st = st;

	return pdPASS;
}

void relay_Tick(void) {
    3122:	b510      	push	{r4, lr}
	if (control.relay1.st) relay1_On(); else relay1_Off();
    3124:	f8d3 109c 	ldr.w	r1, [r3, #156]	; 0x9c
    3128:	f04f 4280 	mov.w	r2, #1073741824	; 0x40000000
    312c:	b109      	cbz	r1, 3132 <relay_Tick+0x12>
    312e:	481a      	ldr	r0, [pc, #104]	; (3198 <relay_Tick+0x78>)
    3130:	e000      	b.n	3134 <relay_Tick+0x14>
    3132:	481a      	ldr	r0, [pc, #104]	; (319c <relay_Tick+0x7c>)
    3134:	6002      	str	r2, [r0, #0]
	if (control.relay2.st) relay2_On(); else relay2_Off();
    3136:	f8d3 20a4 	ldr.w	r2, [r3, #164]	; 0xa4
    313a:	f04f 4000 	mov.w	r0, #2147483648	; 0x80000000
    313e:	b10a      	cbz	r2, 3144 <relay_Tick+0x24>
    3140:	4c15      	ldr	r4, [pc, #84]	; (3198 <relay_Tick+0x78>)
    3142:	e000      	b.n	3146 <relay_Tick+0x26>
    3144:	4c15      	ldr	r4, [pc, #84]	; (319c <relay_Tick+0x7c>)
    3146:	6020      	str	r0, [r4, #0]
	if (control.relay1.timeout > 0) control.relay1.timeout--;
    3148:	f8d3 00a0 	ldr.w	r0, [r3, #160]	; 0xa0
    314c:	4c11      	ldr	r4, [pc, #68]	; (3194 <relay_Tick+0x74>)
    314e:	b120      	cbz	r0, 315a <relay_Tick+0x3a>
    3150:	f8d4 00a0 	ldr.w	r0, [r4, #160]	; 0xa0
    3154:	3801      	subs	r0, #1
    3156:	f8c4 00a0 	str.w	r0, [r4, #160]	; 0xa0
	if (control.relay2.timeout > 0) control.relay2.timeout--;
    315a:	f8d3 00a8 	ldr.w	r0, [r3, #168]	; 0xa8
    315e:	4c0d      	ldr	r4, [pc, #52]	; (3194 <relay_Tick+0x74>)
    3160:	b120      	cbz	r0, 316c <relay_Tick+0x4c>
    3162:	f8d4 00a8 	ldr.w	r0, [r4, #168]	; 0xa8
    3166:	3801      	subs	r0, #1
    3168:	f8c4 00a8 	str.w	r0, [r4, #168]	; 0xa8
	//colocar depois do acionamento para que seja certinho a contagem dos tempos
	if (control.relay1.timeout == 1) control.relay1.st ^= 1;
    316c:	f8d3 00a0 	ldr.w	r0, [r3, #160]	; 0xa0
	if (control.relay2.timeout == 1) control.relay2.st ^= 1;
    3170:	f8d3 30a8 	ldr.w	r3, [r3, #168]	; 0xa8
	if (control.relay1.st) relay1_On(); else relay1_Off();
	if (control.relay2.st) relay2_On(); else relay2_Off();
	if (control.relay1.timeout > 0) control.relay1.timeout--;
	if (control.relay2.timeout > 0) control.relay2.timeout--;
	//colocar depois do acionamento para que seja certinho a contagem dos tempos
	if (control.relay1.timeout == 1) control.relay1.st ^= 1;
    3174:	2801      	cmp	r0, #1
    3176:	bf02      	ittt	eq
    3178:	4806      	ldreq	r0, [pc, #24]	; (3194 <relay_Tick+0x74>)
    317a:	f081 0101 	eoreq.w	r1, r1, #1
    317e:	f8c0 109c 	streq.w	r1, [r0, #156]	; 0x9c
	if (control.relay2.timeout == 1) control.relay2.st ^= 1;
    3182:	2b01      	cmp	r3, #1
    3184:	bf02      	ittt	eq
    3186:	4b03      	ldreq	r3, [pc, #12]	; (3194 <relay_Tick+0x74>)
    3188:	f082 0201 	eoreq.w	r2, r2, #1
    318c:	f8c3 20a4 	streq.w	r2, [r3, #164]	; 0xa4
    3190:	bd10      	pop	{r4, pc}
    3192:	bf00      	nop
    3194:	10000640 	.word	0x10000640
    3198:	2009c038 	.word	0x2009c038
    319c:	2009c03c 	.word	0x2009c03c

Disassembly of section .text.servo_Config:

000031a0 <servo_Config>:
// podemos acionar o servo de modo que a posição ou movimento se faz de modo direto ou progressivo em ms
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
// tp (ms). Valor 0: não há modo progressivo para o servo. Valor > 0 faz modo progressivo
// toff: tempo em segundos que o servo vai ficar ativo. Valor 0 sinaliza ficar ligado direto
int servo_Config(uint servo, uint init, uint min, uint max, int offset, int tp, int toff) {
    31a0:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    31a2:	1e45      	subs	r5, r0, #1
    31a4:	2d06      	cmp	r5, #6
// podemos acionar o servo de modo que a posição ou movimento se faz de modo direto ou progressivo em ms
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
// tp (ms). Valor 0: não há modo progressivo para o servo. Valor > 0 faz modo progressivo
// toff: tempo em segundos que o servo vai ficar ativo. Valor 0 sinaliza ficar ligado direto
int servo_Config(uint servo, uint init, uint min, uint max, int offset, int tp, int toff) {
    31a6:	9f06      	ldr	r7, [sp, #24]
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    31a8:	d83a      	bhi.n	3220 <servo_Config+0x80>
	if ( (offset<minOFFSET_US) || (offset>maxOFFSET_US) ) return errDEVICE_VALUE_INVALID;
    31aa:	f640 34b8 	movw	r4, #3000	; 0xbb8
    31ae:	f207 56dc 	addw	r6, r7, #1500	; 0x5dc
    31b2:	42a6      	cmp	r6, r4
    31b4:	d836      	bhi.n	3224 <servo_Config+0x84>
	if ( (init<minSERVO_US) || (init>maxSERVO_US) ) return errDEVICE_VALUE_INVALID;
    31b6:	f640 3654 	movw	r6, #2900	; 0xb54
    31ba:	f1a1 0e64 	sub.w	lr, r1, #100	; 0x64
    31be:	45b6      	cmp	lr, r6
    31c0:	d830      	bhi.n	3224 <servo_Config+0x84>
	if ( (min<minSERVO_US) || (min>maxSERVO_US) ) return errDEVICE_VALUE_INVALID;
    31c2:	f1a2 0e64 	sub.w	lr, r2, #100	; 0x64
    31c6:	45b6      	cmp	lr, r6
    31c8:	d82c      	bhi.n	3224 <servo_Config+0x84>
	if ( (max<=min) || (max>maxSERVO_US) ) return errDEVICE_VALUE_INVALID;
    31ca:	429a      	cmp	r2, r3
    31cc:	d22a      	bcs.n	3224 <servo_Config+0x84>
    31ce:	42a3      	cmp	r3, r4
    31d0:	d828      	bhi.n	3224 <servo_Config+0x84>

	if(tp<0) tp=0;
	if(toff<0) toff=0;

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do timer progresse em 10 em 10
    31d2:	260a      	movs	r6, #10
    31d4:	fb97 f7f6 	sdiv	r7, r7, r6
	if ( (max<=min) || (max>maxSERVO_US) ) return errDEVICE_VALUE_INVALID;

	if(tp<0) tp=0;
	if(toff<0) toff=0;

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
    31d8:	241c      	movs	r4, #28
    31da:	436c      	muls	r4, r5
    31dc:	f8df e050 	ldr.w	lr, [pc, #80]	; 3230 <servo_Config+0x90>
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do timer progresse em 10 em 10
    31e0:	437e      	muls	r6, r7
	if ( (max<=min) || (max>maxSERVO_US) ) return errDEVICE_VALUE_INVALID;

	if(tp<0) tp=0;
	if(toff<0) toff=0;

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
    31e2:	34a8      	adds	r4, #168	; 0xa8
    31e4:	4474      	add	r4, lr
    31e6:	f104 0508 	add.w	r5, r4, #8
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do timer progresse em 10 em 10
    31ea:	60a6      	str	r6, [r4, #8]
	parServo->min = min;
	parServo->max = max;
    31ec:	60eb      	str	r3, [r5, #12]
	parServo->timeProgress = tp;
    31ee:	9b07      	ldr	r3, [sp, #28]
	parServo->timeActiveOff = toff;

	// o servo 3 é o espelho do servo 2
	if (servo == 2)	{
    31f0:	2802      	cmp	r0, #2

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do timer progresse em 10 em 10
	parServo->min = min;
	parServo->max = max;
	parServo->timeProgress = tp;
    31f2:	ea23 73e3 	bic.w	r3, r3, r3, asr #31
    31f6:	616b      	str	r3, [r5, #20]
	parServo->timeActiveOff = toff;
    31f8:	9b08      	ldr	r3, [sp, #32]
	if(tp<0) tp=0;
	if(toff<0) toff=0;

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do timer progresse em 10 em 10
	parServo->min = min;
    31fa:	60aa      	str	r2, [r5, #8]
	parServo->max = max;
	parServo->timeProgress = tp;
	parServo->timeActiveOff = toff;
    31fc:	ea23 73e3 	bic.w	r3, r3, r3, asr #31
    3200:	612b      	str	r3, [r5, #16]

	// o servo 3 é o espelho do servo 2
	if (servo == 2)	{
    3202:	d106      	bne.n	3212 <servo_Config+0x72>
		parServo->init = init;
    3204:	6069      	str	r1, [r5, #4]
		parServo = (tParServo*)control.servo[servo].par;
		parServo->init = (1500-(init-1500));
    3206:	f5c1 613b 	rsb	r1, r1, #2992	; 0xbb0
    320a:	3108      	adds	r1, #8
    320c:	f8ce 10ec 	str.w	r1, [lr, #236]	; 0xec
    3210:	e002      	b.n	3218 <servo_Config+0x78>
	} else if (servo != 3)
    3212:	2803      	cmp	r0, #3
		parServo->init = init;
    3214:	bf18      	it	ne
    3216:	6069      	strne	r1, [r5, #4]

	flash_Save();
    3218:	f7ff fbb0 	bl	297c <flash_Save>

	return pdPASS;
    321c:	2001      	movs	r0, #1
    321e:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
// tp (ms). Valor 0: não há modo progressivo para o servo. Valor > 0 faz modo progressivo
// toff: tempo em segundos que o servo vai ficar ativo. Valor 0 sinaliza ficar ligado direto
int servo_Config(uint servo, uint init, uint min, uint max, int offset, int tp, int toff) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    3220:	4802      	ldr	r0, [pc, #8]	; (322c <servo_Config+0x8c>)
    3222:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
	if ( (offset<minOFFSET_US) || (offset>maxOFFSET_US) ) return errDEVICE_VALUE_INVALID;
    3224:	f46f 7097 	mvn.w	r0, #302	; 0x12e
		parServo->init = init;

	flash_Save();

	return pdPASS;
}
    3228:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    322a:	bf00      	nop
    322c:	fffffed4 	.word	0xfffffed4
    3230:	10000640 	.word	0x10000640

Disassembly of section .text.servo_Offset:

00003234 <servo_Offset>:

// podemos acionar o servo de modo que a posição ou movimento se faz de modo direto ou progressivo em ms
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
int servo_Offset(uint servo, int offset) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    3234:	3801      	subs	r0, #1
    3236:	2806      	cmp	r0, #6
}

// podemos acionar o servo de modo que a posição ou movimento se faz de modo direto ou progressivo em ms
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
int servo_Offset(uint servo, int offset) {
    3238:	b508      	push	{r3, lr}
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    323a:	d812      	bhi.n	3262 <servo_Offset+0x2e>
	if ( (offset<minOFFSET_US) || (offset>maxOFFSET_US) ) return errDEVICE_VALUE_INVALID;
    323c:	f640 33b8 	movw	r3, #3000	; 0xbb8
    3240:	f201 52dc 	addw	r2, r1, #1500	; 0x5dc
    3244:	429a      	cmp	r2, r3
    3246:	d80e      	bhi.n	3266 <servo_Offset+0x32>

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
    3248:	231c      	movs	r3, #28
    324a:	4358      	muls	r0, r3
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do time progresse em 10 em 10
    324c:	230a      	movs	r3, #10
    324e:	fb91 f1f3 	sdiv	r1, r1, r3
    3252:	434b      	muls	r3, r1
    3254:	4a05      	ldr	r2, [pc, #20]	; (326c <servo_Offset+0x38>)
// offset: deve ser multiplo de 10
int servo_Offset(uint servo, int offset) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
	if ( (offset<minOFFSET_US) || (offset>maxOFFSET_US) ) return errDEVICE_VALUE_INVALID;

	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
    3256:	30a8      	adds	r0, #168	; 0xa8
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do time progresse em 10 em 10
    3258:	5083      	str	r3, [r0, r2]
	flash_Save();
    325a:	f7ff fb8f 	bl	297c <flash_Save>

	return pdPASS;
    325e:	2001      	movs	r0, #1
    3260:	bd08      	pop	{r3, pc}

// podemos acionar o servo de modo que a posição ou movimento se faz de modo direto ou progressivo em ms
//	servo: o servo alvo para posicionamento, valor de 1 a 7
// offset: deve ser multiplo de 10
int servo_Offset(uint servo, int offset) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    3262:	4803      	ldr	r0, [pc, #12]	; (3270 <servo_Offset+0x3c>)
    3264:	bd08      	pop	{r3, pc}
	if ( (offset<minOFFSET_US) || (offset>maxOFFSET_US) ) return errDEVICE_VALUE_INVALID;
    3266:	f46f 7097 	mvn.w	r0, #302	; 0x12e
	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
	parServo->offset = (offset/10)*10;// deve ser multiplo de 10 por causa do time progresse em 10 em 10
	flash_Save();

	return pdPASS;
}
    326a:	bd08      	pop	{r3, pc}
    326c:	10000648 	.word	0x10000648
    3270:	fffffed4 	.word	0xfffffed4

Disassembly of section .text.servo_SetPos:

00003274 <servo_SetPos>:

// Ajusta o posicionamento do servo desejado
//	servo: o servo alvo para posicionamento, valor de 1 a 7
//  us: largura do pulso em microsegundos de controle de posição do servos. Valor entre 100 a 3000uS
int servo_SetPos(uint servo, uint us) {
    3274:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    3276:	1e44      	subs	r4, r0, #1
    3278:	2c06      	cmp	r4, #6
}

// Ajusta o posicionamento do servo desejado
//	servo: o servo alvo para posicionamento, valor de 1 a 7
//  us: largura do pulso em microsegundos de controle de posição do servos. Valor entre 100 a 3000uS
int servo_SetPos(uint servo, uint us) {
    327a:	4606      	mov	r6, r0
	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    327c:	d831      	bhi.n	32e2 <servo_SetPos+0x6e>
	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
    327e:	231c      	movs	r3, #28
    3280:	435c      	muls	r4, r3
    3282:	4f1b      	ldr	r7, [pc, #108]	; (32f0 <servo_SetPos+0x7c>)
    3284:	f104 05a8 	add.w	r5, r4, #168	; 0xa8
    3288:	443d      	add	r5, r7
	if ( (us<(uint)parServo->min) || (us > (uint)parServo->max) ) return errDEVICE_VALUE_OUT_OF_RANGE;
    328a:	692a      	ldr	r2, [r5, #16]
    328c:	428a      	cmp	r2, r1
    328e:	d82a      	bhi.n	32e6 <servo_SetPos+0x72>
    3290:	696b      	ldr	r3, [r5, #20]
    3292:	4299      	cmp	r1, r3
    3294:	d827      	bhi.n	32e6 <servo_SetPos+0x72>
	if ( (us<minSERVO_US) || (us>maxSERVO_US)) return errDEVICE_VALUE_INVALID;
    3296:	f640 3354 	movw	r3, #2900	; 0xb54
    329a:	f1a1 0264 	sub.w	r2, r1, #100	; 0x64
    329e:	429a      	cmp	r2, r3
    32a0:	d823      	bhi.n	32ea <servo_SetPos+0x76>

	// o servo 3 será o espelho do servo 2
	if (servo == 3) return pdPASS;
    32a2:	2803      	cmp	r0, #3
    32a4:	d01b      	beq.n	32de <servo_SetPos+0x6a>
	control.servo[servo-1].posNew = us + parServo->offset;
    32a6:	68ab      	ldr	r3, [r5, #8]
    32a8:	443c      	add	r4, r7
    32aa:	4419      	add	r1, r3
    32ac:	f8c4 10ac 	str.w	r1, [r4, #172]	; 0xac
	servus_SetPos(servo, control.servo[servo-1].posNew);
    32b0:	f001 f9b2 	bl	4618 <servus_SetPos>

	servus_Enable(servo, 1); // Liga o servo
    32b4:	2101      	movs	r1, #1
    32b6:	4630      	mov	r0, r6
    32b8:	f001 f9c8 	bl	464c <servus_Enable>

	// o servo 3 será o espelho do servo 2
	if (servo == 2) {
    32bc:	2e02      	cmp	r6, #2
    32be:	d10e      	bne.n	32de <servo_SetPos+0x6a>
		us = control.servo[servo-1].posNew;
		control.servo[servo].posNew = (1500-(us-1500));
		control.servo[servo].posNew+=parServo->offset;
    32c0:	68ab      	ldr	r3, [r5, #8]
    32c2:	f8d4 10ac 	ldr.w	r1, [r4, #172]	; 0xac
		parServo = (tParServo*)control.servo[servo].par;
		servus_SetPos(servo+1, control.servo[servo].posNew);
    32c6:	2003      	movs	r0, #3

	// o servo 3 será o espelho do servo 2
	if (servo == 2) {
		us = control.servo[servo-1].posNew;
		control.servo[servo].posNew = (1500-(us-1500));
		control.servo[servo].posNew+=parServo->offset;
    32c8:	1a59      	subs	r1, r3, r1
    32ca:	f601 31b8 	addw	r1, r1, #3000	; 0xbb8
    32ce:	f8c7 10e4 	str.w	r1, [r7, #228]	; 0xe4
		parServo = (tParServo*)control.servo[servo].par;
		servus_SetPos(servo+1, control.servo[servo].posNew);
    32d2:	f001 f9a1 	bl	4618 <servus_SetPos>
		servus_Enable(servo+1, 1); // Liga o servo
    32d6:	2101      	movs	r1, #1
    32d8:	2003      	movs	r0, #3
    32da:	f001 f9b7 	bl	464c <servus_Enable>
	};

	return pdPASS;
    32de:	2001      	movs	r0, #1
    32e0:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}

// Ajusta o posicionamento do servo desejado
//	servo: o servo alvo para posicionamento, valor de 1 a 7
//  us: largura do pulso em microsegundos de controle de posição do servos. Valor entre 100 a 3000uS
int servo_SetPos(uint servo, uint us) {
	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    32e2:	4804      	ldr	r0, [pc, #16]	; (32f4 <servo_SetPos+0x80>)
    32e4:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
	tParServo* parServo = (tParServo*)control.servo[servo-1].par;
	if ( (us<(uint)parServo->min) || (us > (uint)parServo->max) ) return errDEVICE_VALUE_OUT_OF_RANGE;
    32e6:	4804      	ldr	r0, [pc, #16]	; (32f8 <servo_SetPos+0x84>)
    32e8:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
	if ( (us<minSERVO_US) || (us>maxSERVO_US)) return errDEVICE_VALUE_INVALID;
    32ea:	f46f 7097 	mvn.w	r0, #302	; 0x12e
		servus_SetPos(servo+1, control.servo[servo].posNew);
		servus_Enable(servo+1, 1); // Liga o servo
	};

	return pdPASS;
}
    32ee:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    32f0:	10000640 	.word	0x10000640
    32f4:	fffffed4 	.word	0xfffffed4
    32f8:	fffffed0 	.word	0xfffffed0

Disassembly of section .text.servo_Hand:

000032fc <servo_Hand>:
	}

	servo_Hand(handOPEN);
}

void servo_Hand(int act) {
    32fc:	4b04      	ldr	r3, [pc, #16]	; (3310 <servo_Hand+0x14>)
	tParServo* parServo = (tParServo*)control.servo[6].par;
	if (act == handCLOSE) servo_SetPos(7, parServo->max);
    32fe:	2801      	cmp	r0, #1
    3300:	bf0c      	ite	eq
    3302:	f8d3 1164 	ldreq.w	r1, [r3, #356]	; 0x164
	else servo_SetPos(7, parServo->min);
    3306:	f8d3 1160 	ldrne.w	r1, [r3, #352]	; 0x160
    330a:	2007      	movs	r0, #7
    330c:	f7ff bfb2 	b.w	3274 <servo_SetPos>
    3310:	10000640 	.word	0x10000640

Disassembly of section .text.servo_Parking:

00003314 <servo_Parking>:
	};

	return pdPASS;
}

void servo_Parking(void) {
    3314:	b538      	push	{r3, r4, r5, lr}
    3316:	4d0d      	ldr	r5, [pc, #52]	; (334c <servo_Parking+0x38>)
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    3318:	2400      	movs	r4, #0
		parServo = (tParServo*)control.servo[x].par;
		control.servo[x].posNew = parServo->init+parServo->offset;
    331a:	f8d5 30b0 	ldr.w	r3, [r5, #176]	; 0xb0
    331e:	f8d5 10b4 	ldr.w	r1, [r5, #180]	; 0xb4
		servus_SetPos(x+1, control.servo[x].posNew);
    3322:	3401      	adds	r4, #1

void servo_Parking(void) {
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		control.servo[x].posNew = parServo->init+parServo->offset;
    3324:	4419      	add	r1, r3
		servus_SetPos(x+1, control.servo[x].posNew);
    3326:	4620      	mov	r0, r4

void servo_Parking(void) {
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		parServo = (tParServo*)control.servo[x].par;
		control.servo[x].posNew = parServo->init+parServo->offset;
    3328:	f8c5 10ac 	str.w	r1, [r5, #172]	; 0xac
		servus_SetPos(x+1, control.servo[x].posNew);
    332c:	f001 f974 	bl	4618 <servus_SetPos>
		servus_Enable(x+1, 1); // Liga o servo
    3330:	2101      	movs	r1, #1
    3332:	4620      	mov	r0, r4
    3334:	f001 f98a 	bl	464c <servus_Enable>
	return pdPASS;
}

void servo_Parking(void) {
	tParServo* parServo;
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    3338:	2c07      	cmp	r4, #7
    333a:	f105 051c 	add.w	r5, r5, #28
    333e:	d1ec      	bne.n	331a <servo_Parking+0x6>
		servus_SetPos(x+1, control.servo[x].posNew);
		servus_Enable(x+1, 1); // Liga o servo
	}

	servo_Hand(handOPEN);
}
    3340:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}
		control.servo[x].posNew = parServo->init+parServo->offset;
		servus_SetPos(x+1, control.servo[x].posNew);
		servus_Enable(x+1, 1); // Liga o servo
	}

	servo_Hand(handOPEN);
    3344:	2000      	movs	r0, #0
    3346:	f7ff bfd9 	b.w	32fc <servo_Hand>
    334a:	bf00      	nop
    334c:	10000640 	.word	0x10000640

Disassembly of section .text.servo_Init:

00003350 <servo_Init>:
// #######################################################################################################
// SERVOS
// #######################################################################################################
volatile uint servosTick = 0;
void servo_Init(void) {
	servo_Parking();
    3350:	f7ff bfe0 	b.w	3314 <servo_Parking>

Disassembly of section .text.crc16_Right:

00003354 <crc16_Right>:
    3354:	b570      	push	{r4, r5, r6, lr}
    3356:	2510      	movs	r5, #16
    3358:	2400      	movs	r4, #0
    335a:	f002 0601 	and.w	r6, r2, #1
    335e:	3d01      	subs	r5, #1
    3360:	ea46 0444 	orr.w	r4, r6, r4, lsl #1
    3364:	b2ad      	uxth	r5, r5
    3366:	b2a4      	uxth	r4, r4
    3368:	0852      	lsrs	r2, r2, #1
    336a:	2d00      	cmp	r5, #0
    336c:	d1f5      	bne.n	335a <crc16_Right+0x6>
    336e:	4401      	add	r1, r0
    3370:	4288      	cmp	r0, r1
    3372:	d010      	beq.n	3396 <crc16_Right+0x42>
    3374:	f810 2b01 	ldrb.w	r2, [r0], #1
    3378:	4053      	eors	r3, r2
    337a:	2208      	movs	r2, #8
    337c:	f013 0f01 	tst.w	r3, #1
    3380:	f102 32ff 	add.w	r2, r2, #4294967295
    3384:	ea4f 0353 	mov.w	r3, r3, lsr #1
    3388:	b29b      	uxth	r3, r3
    338a:	b292      	uxth	r2, r2
    338c:	bf18      	it	ne
    338e:	4063      	eorne	r3, r4
    3390:	2a00      	cmp	r2, #0
    3392:	d1f3      	bne.n	337c <crc16_Right+0x28>
    3394:	e7ec      	b.n	3370 <crc16_Right+0x1c>
    3396:	4618      	mov	r0, r3
    3398:	bd70      	pop	{r4, r5, r6, pc}

Disassembly of section .text.crc16_MODBUS:

0000339a <crc16_MODBUS>:
    339a:	f64f 73ff 	movw	r3, #65535	; 0xffff
    339e:	f248 0205 	movw	r2, #32773	; 0x8005
    33a2:	f7ff bfd7 	b.w	3354 <crc16_Right>

Disassembly of section .text.print_putchar:

000033a8 <print_putchar>:
    33a8:	6802      	ldr	r2, [r0, #0]
    33aa:	b538      	push	{r3, r4, r5, lr}
    33ac:	b122      	cbz	r2, 33b8 <print_putchar+0x10>
    33ae:	6843      	ldr	r3, [r0, #4]
    33b0:	1c5c      	adds	r4, r3, #1
    33b2:	6044      	str	r4, [r0, #4]
    33b4:	54d1      	strb	r1, [r2, r3]
    33b6:	bd38      	pop	{r3, r4, r5, pc}
    33b8:	7b03      	ldrb	r3, [r0, #12]
    33ba:	4c10      	ldr	r4, [pc, #64]	; (33fc <print_putchar+0x54>)
    33bc:	3b01      	subs	r3, #1
    33be:	2b06      	cmp	r3, #6
    33c0:	d814      	bhi.n	33ec <print_putchar+0x44>
    33c2:	e8df f003 	tbb	[pc, r3]
    33c6:	0604      	.short	0x0604
    33c8:	0e0c0a08 	.word	0x0e0c0a08
    33cc:	10          	.byte	0x10
    33cd:	00          	.byte	0x00
    33ce:	4b0c      	ldr	r3, [pc, #48]	; (3400 <print_putchar+0x58>)
    33d0:	e00a      	b.n	33e8 <print_putchar+0x40>
    33d2:	4b0c      	ldr	r3, [pc, #48]	; (3404 <print_putchar+0x5c>)
    33d4:	e008      	b.n	33e8 <print_putchar+0x40>
    33d6:	4b0c      	ldr	r3, [pc, #48]	; (3408 <print_putchar+0x60>)
    33d8:	e006      	b.n	33e8 <print_putchar+0x40>
    33da:	4b0c      	ldr	r3, [pc, #48]	; (340c <print_putchar+0x64>)
    33dc:	e004      	b.n	33e8 <print_putchar+0x40>
    33de:	4b0c      	ldr	r3, [pc, #48]	; (3410 <print_putchar+0x68>)
    33e0:	e002      	b.n	33e8 <print_putchar+0x40>
    33e2:	4b0c      	ldr	r3, [pc, #48]	; (3414 <print_putchar+0x6c>)
    33e4:	e000      	b.n	33e8 <print_putchar+0x40>
    33e6:	4b0c      	ldr	r3, [pc, #48]	; (3418 <print_putchar+0x70>)
    33e8:	681b      	ldr	r3, [r3, #0]
    33ea:	6023      	str	r3, [r4, #0]
    33ec:	b20d      	sxth	r5, r1
    33ee:	6823      	ldr	r3, [r4, #0]
    33f0:	4628      	mov	r0, r5
    33f2:	4798      	blx	r3
    33f4:	2800      	cmp	r0, #0
    33f6:	dbfa      	blt.n	33ee <print_putchar+0x46>
    33f8:	bd38      	pop	{r3, r4, r5, pc}
    33fa:	bf00      	nop
    33fc:	100009f0 	.word	0x100009f0
    3400:	100009ec 	.word	0x100009ec
    3404:	10000a04 	.word	0x10000a04
    3408:	10000a08 	.word	0x10000a08
    340c:	100009e8 	.word	0x100009e8
    3410:	100009f8 	.word	0x100009f8
    3414:	100009f4 	.word	0x100009f4
    3418:	10000a00 	.word	0x10000a00

Disassembly of section .text.print_fill:

0000341c <print_fill>:
    341c:	b538      	push	{r3, r4, r5, lr}
    341e:	4605      	mov	r5, r0
    3420:	7a04      	ldrb	r4, [r0, #8]
    3422:	1a64      	subs	r4, r4, r1
    3424:	2c00      	cmp	r4, #0
    3426:	dd05      	ble.n	3434 <print_fill+0x18>
    3428:	7a69      	ldrb	r1, [r5, #9]
    342a:	4628      	mov	r0, r5
    342c:	f7ff ffbc 	bl	33a8 <print_putchar>
    3430:	3c01      	subs	r4, #1
    3432:	e7f7      	b.n	3424 <print_fill+0x8>
    3434:	bd38      	pop	{r3, r4, r5, pc}

Disassembly of section .text.print_int:

00003436 <print_int>:
    3436:	b570      	push	{r4, r5, r6, lr}
    3438:	4605      	mov	r5, r0
    343a:	2900      	cmp	r1, #0
    343c:	b090      	sub	sp, #64	; 0x40
    343e:	bfba      	itte	lt
    3440:	4249      	neglt	r1, r1
    3442:	2201      	movlt	r2, #1
    3444:	2200      	movge	r2, #0
    3446:	2300      	movs	r3, #0
    3448:	260a      	movs	r6, #10
    344a:	fb91 f0f6 	sdiv	r0, r1, r6
    344e:	fb06 1110 	mls	r1, r6, r0, r1
    3452:	3130      	adds	r1, #48	; 0x30
    3454:	f80d 1003 	strb.w	r1, [sp, r3]
    3458:	1c5c      	adds	r4, r3, #1
    345a:	4601      	mov	r1, r0
    345c:	b108      	cbz	r0, 3462 <print_int+0x2c>
    345e:	4623      	mov	r3, r4
    3460:	e7f3      	b.n	344a <print_int+0x14>
    3462:	b12a      	cbz	r2, 3470 <print_int+0x3a>
    3464:	aa10      	add	r2, sp, #64	; 0x40
    3466:	4414      	add	r4, r2
    3468:	222d      	movs	r2, #45	; 0x2d
    346a:	f804 2c40 	strb.w	r2, [r4, #-64]
    346e:	1c9c      	adds	r4, r3, #2
    3470:	4621      	mov	r1, r4
    3472:	4628      	mov	r0, r5
    3474:	f7ff ffd2 	bl	341c <print_fill>
    3478:	f114 34ff 	adds.w	r4, r4, #4294967295
    347c:	d305      	bcc.n	348a <print_int+0x54>
    347e:	f81d 1004 	ldrb.w	r1, [sp, r4]
    3482:	4628      	mov	r0, r5
    3484:	f7ff ff90 	bl	33a8 <print_putchar>
    3488:	e7f6      	b.n	3478 <print_int+0x42>
    348a:	b010      	add	sp, #64	; 0x40
    348c:	bd70      	pop	{r4, r5, r6, pc}

Disassembly of section .text.print_long:

0000348e <print_long>:
    348e:	b570      	push	{r4, r5, r6, lr}
    3490:	1e0c      	subs	r4, r1, #0
    3492:	b090      	sub	sp, #64	; 0x40
    3494:	4606      	mov	r6, r0
    3496:	da03      	bge.n	34a0 <print_long+0x12>
    3498:	212d      	movs	r1, #45	; 0x2d
    349a:	f7ff ff85 	bl	33a8 <print_putchar>
    349e:	4264      	negs	r4, r4
    34a0:	2500      	movs	r5, #0
    34a2:	220a      	movs	r2, #10
    34a4:	fb94 f3f2 	sdiv	r3, r4, r2
    34a8:	fb02 4413 	mls	r4, r2, r3, r4
    34ac:	3501      	adds	r5, #1
    34ae:	3430      	adds	r4, #48	; 0x30
    34b0:	eb0d 0105 	add.w	r1, sp, r5
    34b4:	f801 4c01 	strb.w	r4, [r1, #-1]
    34b8:	461c      	mov	r4, r3
    34ba:	2b00      	cmp	r3, #0
    34bc:	d1f2      	bne.n	34a4 <print_long+0x16>
    34be:	4629      	mov	r1, r5
    34c0:	4630      	mov	r0, r6
    34c2:	f7ff ffab 	bl	341c <print_fill>
    34c6:	f115 35ff 	adds.w	r5, r5, #4294967295
    34ca:	d305      	bcc.n	34d8 <print_long+0x4a>
    34cc:	f81d 1005 	ldrb.w	r1, [sp, r5]
    34d0:	4630      	mov	r0, r6
    34d2:	f7ff ff69 	bl	33a8 <print_putchar>
    34d6:	e7f6      	b.n	34c6 <print_long+0x38>
    34d8:	b010      	add	sp, #64	; 0x40
    34da:	bd70      	pop	{r4, r5, r6, pc}

Disassembly of section .text.print_float:

000034dc <print_float>:
    34dc:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
    34de:	4616      	mov	r6, r2
    34e0:	461d      	mov	r5, r3
    34e2:	4604      	mov	r4, r0
    34e4:	2200      	movs	r2, #0
    34e6:	2300      	movs	r3, #0
    34e8:	4630      	mov	r0, r6
    34ea:	4629      	mov	r1, r5
    34ec:	f7fd fb30 	bl	b50 <__aeabi_dcmplt>
    34f0:	b128      	cbz	r0, 34fe <print_float+0x22>
    34f2:	212d      	movs	r1, #45	; 0x2d
    34f4:	4620      	mov	r0, r4
    34f6:	f7ff ff57 	bl	33a8 <print_putchar>
    34fa:	f105 4500 	add.w	r5, r5, #2147483648	; 0x80000000
    34fe:	4629      	mov	r1, r5
    3500:	4630      	mov	r0, r6
    3502:	f7fd fb4d 	bl	ba0 <__aeabi_d2iz>
    3506:	4601      	mov	r1, r0
    3508:	4607      	mov	r7, r0
    350a:	4620      	mov	r0, r4
    350c:	f7ff ffbf 	bl	348e <print_long>
    3510:	7aa3      	ldrb	r3, [r4, #10]
    3512:	b3bb      	cbz	r3, 3584 <print_float+0xa8>
    3514:	212e      	movs	r1, #46	; 0x2e
    3516:	4620      	mov	r0, r4
    3518:	f7ff ff46 	bl	33a8 <print_putchar>
    351c:	2300      	movs	r3, #0
    351e:	7223      	strb	r3, [r4, #8]
    3520:	4638      	mov	r0, r7
    3522:	f7fd f83d 	bl	5a0 <__aeabi_i2d>
    3526:	4602      	mov	r2, r0
    3528:	460b      	mov	r3, r1
    352a:	4630      	mov	r0, r6
    352c:	4629      	mov	r1, r5
    352e:	f7fc fee9 	bl	304 <__aeabi_dsub>
    3532:	4606      	mov	r6, r0
    3534:	460f      	mov	r7, r1
    3536:	7aa3      	ldrb	r3, [r4, #10]
    3538:	1e5a      	subs	r2, r3, #1
    353a:	72a2      	strb	r2, [r4, #10]
    353c:	2200      	movs	r2, #0
    353e:	b18b      	cbz	r3, 3564 <print_float+0x88>
    3540:	4b11      	ldr	r3, [pc, #68]	; (3588 <print_float+0xac>)
    3542:	4630      	mov	r0, r6
    3544:	4639      	mov	r1, r7
    3546:	f7fd f891 	bl	66c <__aeabi_dmul>
    354a:	2200      	movs	r2, #0
    354c:	4b0f      	ldr	r3, [pc, #60]	; (358c <print_float+0xb0>)
    354e:	4606      	mov	r6, r0
    3550:	460f      	mov	r7, r1
    3552:	f7fd fafd 	bl	b50 <__aeabi_dcmplt>
    3556:	2800      	cmp	r0, #0
    3558:	d0ed      	beq.n	3536 <print_float+0x5a>
    355a:	2130      	movs	r1, #48	; 0x30
    355c:	4620      	mov	r0, r4
    355e:	f7ff ff23 	bl	33a8 <print_putchar>
    3562:	e7e8      	b.n	3536 <print_float+0x5a>
    3564:	4b09      	ldr	r3, [pc, #36]	; (358c <print_float+0xb0>)
    3566:	4630      	mov	r0, r6
    3568:	4639      	mov	r1, r7
    356a:	f7fd fb0f 	bl	b8c <__aeabi_dcmpgt>
    356e:	b148      	cbz	r0, 3584 <print_float+0xa8>
    3570:	4639      	mov	r1, r7
    3572:	4630      	mov	r0, r6
    3574:	f7fd fb14 	bl	ba0 <__aeabi_d2iz>
    3578:	4601      	mov	r1, r0
    357a:	4620      	mov	r0, r4
    357c:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
    3580:	f7ff bf85 	b.w	348e <print_long>
    3584:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    3586:	bf00      	nop
    3588:	40240000 	.word	0x40240000
    358c:	3ff00000 	.word	0x3ff00000

Disassembly of section .text.rprintf_RegisterDev:

00003590 <rprintf_RegisterDev>:
    3590:	3804      	subs	r0, #4
    3592:	2803      	cmp	r0, #3
    3594:	d80b      	bhi.n	35ae <rprintf_RegisterDev+0x1e>
    3596:	e8df f000 	tbb	[pc, r0]
    359a:	0402      	.short	0x0402
    359c:	0806      	.short	0x0806
    359e:	4b04      	ldr	r3, [pc, #16]	; (35b0 <rprintf_RegisterDev+0x20>)
    35a0:	e004      	b.n	35ac <rprintf_RegisterDev+0x1c>
    35a2:	4b04      	ldr	r3, [pc, #16]	; (35b4 <rprintf_RegisterDev+0x24>)
    35a4:	e002      	b.n	35ac <rprintf_RegisterDev+0x1c>
    35a6:	4b04      	ldr	r3, [pc, #16]	; (35b8 <rprintf_RegisterDev+0x28>)
    35a8:	e000      	b.n	35ac <rprintf_RegisterDev+0x1c>
    35aa:	4b04      	ldr	r3, [pc, #16]	; (35bc <rprintf_RegisterDev+0x2c>)
    35ac:	6019      	str	r1, [r3, #0]
    35ae:	4770      	bx	lr
    35b0:	100009e8 	.word	0x100009e8
    35b4:	100009f8 	.word	0x100009f8
    35b8:	100009f4 	.word	0x100009f4
    35bc:	10000a00 	.word	0x10000a00

Disassembly of section .text.lputchar_RegisterDev:

000035c0 <lputchar_RegisterDev>:
    35c0:	4b01      	ldr	r3, [pc, #4]	; (35c8 <lputchar_RegisterDev+0x8>)
    35c2:	6018      	str	r0, [r3, #0]
    35c4:	4770      	bx	lr
    35c6:	bf00      	nop
    35c8:	100009ec 	.word	0x100009ec

Disassembly of section .text.ldebug_RegisterDev:

000035cc <ldebug_RegisterDev>:
    35cc:	4b01      	ldr	r3, [pc, #4]	; (35d4 <ldebug_RegisterDev+0x8>)
    35ce:	6018      	str	r0, [r3, #0]
    35d0:	4770      	bx	lr
    35d2:	bf00      	nop
    35d4:	10000a04 	.word	0x10000a04

Disassembly of section .text.lgetchar_RegisterDev:

000035d8 <lgetchar_RegisterDev>:
    35d8:	4b01      	ldr	r3, [pc, #4]	; (35e0 <lgetchar_RegisterDev+0x8>)
    35da:	6018      	str	r0, [r3, #0]
    35dc:	4770      	bx	lr
    35de:	bf00      	nop
    35e0:	100009fc 	.word	0x100009fc

Disassembly of section .text.doprint:

000035e4 <doprint>:
    35e4:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr}
    35e8:	4604      	mov	r4, r0
    35ea:	4615      	mov	r5, r2
    35ec:	4688      	mov	r8, r1
    35ee:	2100      	movs	r1, #0
    35f0:	b095      	sub	sp, #84	; 0x54
    35f2:	6041      	str	r1, [r0, #4]
    35f4:	f108 0701 	add.w	r7, r8, #1
    35f8:	f898 6000 	ldrb.w	r6, [r8]
    35fc:	2900      	cmp	r1, #0
    35fe:	f000 818b 	beq.w	3918 <doprint+0x334>
    3602:	f006 03df 	and.w	r3, r6, #223	; 0xdf
    3606:	2b4c      	cmp	r3, #76	; 0x4c
    3608:	d10b      	bne.n	3622 <doprint+0x3e>
    360a:	f898 3001 	ldrb.w	r3, [r8, #1]
    360e:	2b64      	cmp	r3, #100	; 0x64
    3610:	d107      	bne.n	3622 <doprint+0x3e>
    3612:	6829      	ldr	r1, [r5, #0]
    3614:	4620      	mov	r0, r4
    3616:	1d2e      	adds	r6, r5, #4
    3618:	f7ff ff39 	bl	348e <print_long>
    361c:	f108 0702 	add.w	r7, r8, #2
    3620:	e0bd      	b.n	379e <doprint+0x1ba>
    3622:	2e63      	cmp	r6, #99	; 0x63
    3624:	d03c      	beq.n	36a0 <doprint+0xbc>
    3626:	d819      	bhi.n	365c <doprint+0x78>
    3628:	2e53      	cmp	r6, #83	; 0x53
    362a:	f000 808c 	beq.w	3746 <doprint+0x162>
    362e:	d80c      	bhi.n	364a <doprint+0x66>
    3630:	2e43      	cmp	r6, #67	; 0x43
    3632:	d035      	beq.n	36a0 <doprint+0xbc>
    3634:	2e44      	cmp	r6, #68	; 0x44
    3636:	d036      	beq.n	36a6 <doprint+0xc2>
    3638:	2e25      	cmp	r6, #37	; 0x25
    363a:	f040 814f 	bne.w	38dc <doprint+0x2f8>
    363e:	4631      	mov	r1, r6
    3640:	4620      	mov	r0, r4
    3642:	f7ff feb1 	bl	33a8 <print_putchar>
    3646:	462e      	mov	r6, r5
    3648:	e17b      	b.n	3942 <doprint+0x35e>
    364a:	2e58      	cmp	r6, #88	; 0x58
    364c:	d04f      	beq.n	36ee <doprint+0x10a>
    364e:	2e62      	cmp	r6, #98	; 0x62
    3650:	f000 80d4 	beq.w	37fc <doprint+0x218>
    3654:	2e55      	cmp	r6, #85	; 0x55
    3656:	f040 8141 	bne.w	38dc <doprint+0x2f8>
    365a:	e027      	b.n	36ac <doprint+0xc8>
    365c:	2e6b      	cmp	r6, #107	; 0x6b
    365e:	f000 8088 	beq.w	3772 <doprint+0x18e>
    3662:	d811      	bhi.n	3688 <doprint+0xa4>
    3664:	2e65      	cmp	r6, #101	; 0x65
    3666:	f000 80e8 	beq.w	383a <doprint+0x256>
    366a:	d31c      	bcc.n	36a6 <doprint+0xc2>
    366c:	2e66      	cmp	r6, #102	; 0x66
    366e:	f040 8135 	bne.w	38dc <doprint+0x2f8>
    3672:	3507      	adds	r5, #7
    3674:	f025 0507 	bic.w	r5, r5, #7
    3678:	e9d5 2300 	ldrd	r2, r3, [r5]
    367c:	4620      	mov	r0, r4
    367e:	f105 0608 	add.w	r6, r5, #8
    3682:	f7ff ff2b 	bl	34dc <print_float>
    3686:	e15c      	b.n	3942 <doprint+0x35e>
    3688:	2e74      	cmp	r6, #116	; 0x74
    368a:	f000 8094 	beq.w	37b6 <doprint+0x1d2>
    368e:	d802      	bhi.n	3696 <doprint+0xb2>
    3690:	2e73      	cmp	r6, #115	; 0x73
    3692:	d058      	beq.n	3746 <doprint+0x162>
    3694:	e122      	b.n	38dc <doprint+0x2f8>
    3696:	2e75      	cmp	r6, #117	; 0x75
    3698:	d008      	beq.n	36ac <doprint+0xc8>
    369a:	2e78      	cmp	r6, #120	; 0x78
    369c:	d027      	beq.n	36ee <doprint+0x10a>
    369e:	e11d      	b.n	38dc <doprint+0x2f8>
    36a0:	1d2e      	adds	r6, r5, #4
    36a2:	7829      	ldrb	r1, [r5, #0]
    36a4:	e083      	b.n	37ae <doprint+0x1ca>
    36a6:	1d2e      	adds	r6, r5, #4
    36a8:	6829      	ldr	r1, [r5, #0]
    36aa:	e113      	b.n	38d4 <doprint+0x2f0>
    36ac:	1d2e      	adds	r6, r5, #4
    36ae:	682b      	ldr	r3, [r5, #0]
    36b0:	f10d 0810 	add.w	r8, sp, #16
    36b4:	2500      	movs	r5, #0
    36b6:	210a      	movs	r1, #10
    36b8:	fbb3 f2f1 	udiv	r2, r3, r1
    36bc:	fb01 3312 	mls	r3, r1, r2, r3
    36c0:	3501      	adds	r5, #1
    36c2:	3330      	adds	r3, #48	; 0x30
    36c4:	eb08 0005 	add.w	r0, r8, r5
    36c8:	f800 3c01 	strb.w	r3, [r0, #-1]
    36cc:	4613      	mov	r3, r2
    36ce:	2a00      	cmp	r2, #0
    36d0:	d1f2      	bne.n	36b8 <doprint+0xd4>
    36d2:	4629      	mov	r1, r5
    36d4:	4620      	mov	r0, r4
    36d6:	f7ff fea1 	bl	341c <print_fill>
    36da:	f115 35ff 	adds.w	r5, r5, #4294967295
    36de:	f0c0 8130 	bcc.w	3942 <doprint+0x35e>
    36e2:	f818 1005 	ldrb.w	r1, [r8, r5]
    36e6:	4620      	mov	r0, r4
    36e8:	f7ff fe5e 	bl	33a8 <print_putchar>
    36ec:	e7f5      	b.n	36da <doprint+0xf6>
    36ee:	46ee      	mov	lr, sp
    36f0:	4b97      	ldr	r3, [pc, #604]	; (3950 <doprint+0x36c>)
    36f2:	682a      	ldr	r2, [r5, #0]
    36f4:	1d2e      	adds	r6, r5, #4
    36f6:	f103 0c10 	add.w	ip, r3, #16
    36fa:	4675      	mov	r5, lr
    36fc:	6818      	ldr	r0, [r3, #0]
    36fe:	6859      	ldr	r1, [r3, #4]
    3700:	3308      	adds	r3, #8
    3702:	c503      	stmia	r5!, {r0, r1}
    3704:	4563      	cmp	r3, ip
    3706:	46ae      	mov	lr, r5
    3708:	d1f7      	bne.n	36fa <doprint+0x116>
    370a:	2500      	movs	r5, #0
    370c:	f10d 0810 	add.w	r8, sp, #16
    3710:	f002 030f 	and.w	r3, r2, #15
    3714:	a814      	add	r0, sp, #80	; 0x50
    3716:	4403      	add	r3, r0
    3718:	3501      	adds	r5, #1
    371a:	f813 3c50 	ldrb.w	r3, [r3, #-80]
    371e:	eb08 0105 	add.w	r1, r8, r5
    3722:	0912      	lsrs	r2, r2, #4
    3724:	f801 3c01 	strb.w	r3, [r1, #-1]
    3728:	d1f2      	bne.n	3710 <doprint+0x12c>
    372a:	4629      	mov	r1, r5
    372c:	4620      	mov	r0, r4
    372e:	f7ff fe75 	bl	341c <print_fill>
    3732:	f115 35ff 	adds.w	r5, r5, #4294967295
    3736:	f0c0 8104 	bcc.w	3942 <doprint+0x35e>
    373a:	f818 1005 	ldrb.w	r1, [r8, r5]
    373e:	4620      	mov	r0, r4
    3740:	f7ff fe32 	bl	33a8 <print_putchar>
    3744:	e7f5      	b.n	3732 <doprint+0x14e>
    3746:	1d2e      	adds	r6, r5, #4
    3748:	682d      	ldr	r5, [r5, #0]
    374a:	2d00      	cmp	r5, #0
    374c:	f000 80f9 	beq.w	3942 <doprint+0x35e>
    3750:	46a9      	mov	r9, r5
    3752:	ebc5 0109 	rsb	r1, r5, r9
    3756:	f819 8b01 	ldrb.w	r8, [r9], #1
    375a:	f1b8 0f00 	cmp.w	r8, #0
    375e:	d004      	beq.n	376a <doprint+0x186>
    3760:	4641      	mov	r1, r8
    3762:	4620      	mov	r0, r4
    3764:	f7ff fe20 	bl	33a8 <print_putchar>
    3768:	e7f3      	b.n	3752 <doprint+0x16e>
    376a:	4620      	mov	r0, r4
    376c:	f7ff fe56 	bl	341c <print_fill>
    3770:	e0e7      	b.n	3942 <doprint+0x35e>
    3772:	1d2e      	adds	r6, r5, #4
    3774:	6829      	ldr	r1, [r5, #0]
    3776:	2500      	movs	r5, #0
    3778:	f5b1 5f20 	cmp.w	r1, #10240	; 0x2800
    377c:	dd02      	ble.n	3784 <doprint+0x1a0>
    377e:	1289      	asrs	r1, r1, #10
    3780:	3501      	adds	r5, #1
    3782:	e7f9      	b.n	3778 <doprint+0x194>
    3784:	4620      	mov	r0, r4
    3786:	f7ff fe56 	bl	3436 <print_int>
    378a:	2d01      	cmp	r5, #1
    378c:	d101      	bne.n	3792 <doprint+0x1ae>
    378e:	216b      	movs	r1, #107	; 0x6b
    3790:	e00d      	b.n	37ae <doprint+0x1ca>
    3792:	2d02      	cmp	r5, #2
    3794:	d107      	bne.n	37a6 <doprint+0x1c2>
    3796:	214d      	movs	r1, #77	; 0x4d
    3798:	4620      	mov	r0, r4
    379a:	f7ff fe05 	bl	33a8 <print_putchar>
    379e:	4635      	mov	r5, r6
    37a0:	2100      	movs	r1, #0
    37a2:	46b8      	mov	r8, r7
    37a4:	e726      	b.n	35f4 <doprint+0x10>
    37a6:	2d03      	cmp	r5, #3
    37a8:	f040 80cb 	bne.w	3942 <doprint+0x35e>
    37ac:	2147      	movs	r1, #71	; 0x47
    37ae:	4620      	mov	r0, r4
    37b0:	f7ff fdfa 	bl	33a8 <print_putchar>
    37b4:	e0c5      	b.n	3942 <doprint+0x35e>
    37b6:	f8d5 9000 	ldr.w	r9, [r5]
    37ba:	2302      	movs	r3, #2
    37bc:	7223      	strb	r3, [r4, #8]
    37be:	f44f 6161 	mov.w	r1, #3600	; 0xe10
    37c2:	2330      	movs	r3, #48	; 0x30
    37c4:	7263      	strb	r3, [r4, #9]
    37c6:	fb99 f1f1 	sdiv	r1, r9, r1
    37ca:	4620      	mov	r0, r4
    37cc:	f7ff fe33 	bl	3436 <print_int>
    37d0:	1d2e      	adds	r6, r5, #4
    37d2:	213a      	movs	r1, #58	; 0x3a
    37d4:	253c      	movs	r5, #60	; 0x3c
    37d6:	4620      	mov	r0, r4
    37d8:	f7ff fde6 	bl	33a8 <print_putchar>
    37dc:	fb99 f8f5 	sdiv	r8, r9, r5
    37e0:	fb98 f1f5 	sdiv	r1, r8, r5
    37e4:	4620      	mov	r0, r4
    37e6:	fb05 8111 	mls	r1, r5, r1, r8
    37ea:	f7ff fe24 	bl	3436 <print_int>
    37ee:	2127      	movs	r1, #39	; 0x27
    37f0:	4620      	mov	r0, r4
    37f2:	f7ff fdd9 	bl	33a8 <print_putchar>
    37f6:	fb05 9118 	mls	r1, r5, r8, r9
    37fa:	e06b      	b.n	38d4 <doprint+0x2f0>
    37fc:	2230      	movs	r2, #48	; 0x30
    37fe:	682b      	ldr	r3, [r5, #0]
    3800:	1d2e      	adds	r6, r5, #4
    3802:	7262      	strb	r2, [r4, #9]
    3804:	2500      	movs	r5, #0
    3806:	f10d 0810 	add.w	r8, sp, #16
    380a:	f003 0201 	and.w	r2, r3, #1
    380e:	3501      	adds	r5, #1
    3810:	eb08 0105 	add.w	r1, r8, r5
    3814:	3230      	adds	r2, #48	; 0x30
    3816:	105b      	asrs	r3, r3, #1
    3818:	f801 2c01 	strb.w	r2, [r1, #-1]
    381c:	d1f5      	bne.n	380a <doprint+0x226>
    381e:	4629      	mov	r1, r5
    3820:	4620      	mov	r0, r4
    3822:	f7ff fdfb 	bl	341c <print_fill>
    3826:	f115 35ff 	adds.w	r5, r5, #4294967295
    382a:	f0c0 808a 	bcc.w	3942 <doprint+0x35e>
    382e:	f818 1005 	ldrb.w	r1, [r8, r5]
    3832:	4620      	mov	r0, r4
    3834:	f7ff fdb8 	bl	33a8 <print_putchar>
    3838:	e7f5      	b.n	3826 <doprint+0x242>
    383a:	3507      	adds	r5, #7
    383c:	f025 0507 	bic.w	r5, r5, #7
    3840:	f8d5 8000 	ldr.w	r8, [r5]
    3844:	f105 0608 	add.w	r6, r5, #8
    3848:	686d      	ldr	r5, [r5, #4]
    384a:	2200      	movs	r2, #0
    384c:	2300      	movs	r3, #0
    384e:	4640      	mov	r0, r8
    3850:	4629      	mov	r1, r5
    3852:	f7fd f97d 	bl	b50 <__aeabi_dcmplt>
    3856:	b128      	cbz	r0, 3864 <doprint+0x280>
    3858:	212d      	movs	r1, #45	; 0x2d
    385a:	4620      	mov	r0, r4
    385c:	f7ff fda4 	bl	33a8 <print_putchar>
    3860:	f105 4500 	add.w	r5, r5, #2147483648	; 0x80000000
    3864:	2200      	movs	r2, #0
    3866:	2300      	movs	r3, #0
    3868:	4640      	mov	r0, r8
    386a:	4629      	mov	r1, r5
    386c:	f7fd f966 	bl	b3c <__aeabi_dcmpeq>
    3870:	bb20      	cbnz	r0, 38bc <doprint+0x2d8>
    3872:	4681      	mov	r9, r0
    3874:	2200      	movs	r2, #0
    3876:	4b37      	ldr	r3, [pc, #220]	; (3954 <doprint+0x370>)
    3878:	4640      	mov	r0, r8
    387a:	4629      	mov	r1, r5
    387c:	f7fd f968 	bl	b50 <__aeabi_dcmplt>
    3880:	b150      	cbz	r0, 3898 <doprint+0x2b4>
    3882:	4640      	mov	r0, r8
    3884:	4629      	mov	r1, r5
    3886:	2200      	movs	r2, #0
    3888:	4b33      	ldr	r3, [pc, #204]	; (3958 <doprint+0x374>)
    388a:	f7fc feef 	bl	66c <__aeabi_dmul>
    388e:	f109 39ff 	add.w	r9, r9, #4294967295
    3892:	4680      	mov	r8, r0
    3894:	460d      	mov	r5, r1
    3896:	e7ed      	b.n	3874 <doprint+0x290>
    3898:	2200      	movs	r2, #0
    389a:	4b2f      	ldr	r3, [pc, #188]	; (3958 <doprint+0x374>)
    389c:	4640      	mov	r0, r8
    389e:	4629      	mov	r1, r5
    38a0:	f7fd f974 	bl	b8c <__aeabi_dcmpgt>
    38a4:	b160      	cbz	r0, 38c0 <doprint+0x2dc>
    38a6:	4640      	mov	r0, r8
    38a8:	4629      	mov	r1, r5
    38aa:	2200      	movs	r2, #0
    38ac:	4b2a      	ldr	r3, [pc, #168]	; (3958 <doprint+0x374>)
    38ae:	f7fd f807 	bl	8c0 <__aeabi_ddiv>
    38b2:	f109 0901 	add.w	r9, r9, #1
    38b6:	4680      	mov	r8, r0
    38b8:	460d      	mov	r5, r1
    38ba:	e7ed      	b.n	3898 <doprint+0x2b4>
    38bc:	f04f 0900 	mov.w	r9, #0
    38c0:	4642      	mov	r2, r8
    38c2:	462b      	mov	r3, r5
    38c4:	4620      	mov	r0, r4
    38c6:	f7ff fe09 	bl	34dc <print_float>
    38ca:	2145      	movs	r1, #69	; 0x45
    38cc:	4620      	mov	r0, r4
    38ce:	f7ff fd6b 	bl	33a8 <print_putchar>
    38d2:	4649      	mov	r1, r9
    38d4:	4620      	mov	r0, r4
    38d6:	f7ff fdae 	bl	3436 <print_int>
    38da:	e032      	b.n	3942 <doprint+0x35e>
    38dc:	2e30      	cmp	r6, #48	; 0x30
    38de:	d103      	bne.n	38e8 <doprint+0x304>
    38e0:	7a23      	ldrb	r3, [r4, #8]
    38e2:	b953      	cbnz	r3, 38fa <doprint+0x316>
    38e4:	7266      	strb	r6, [r4, #9]
    38e6:	e01e      	b.n	3926 <doprint+0x342>
    38e8:	2e2e      	cmp	r6, #46	; 0x2e
    38ea:	d106      	bne.n	38fa <doprint+0x316>
    38ec:	f898 3001 	ldrb.w	r3, [r8, #1]
    38f0:	f108 0702 	add.w	r7, r8, #2
    38f4:	3b30      	subs	r3, #48	; 0x30
    38f6:	72a3      	strb	r3, [r4, #10]
    38f8:	e015      	b.n	3926 <doprint+0x342>
    38fa:	f1a6 0330 	sub.w	r3, r6, #48	; 0x30
    38fe:	2b09      	cmp	r3, #9
    3900:	d808      	bhi.n	3914 <doprint+0x330>
    3902:	7a23      	ldrb	r3, [r4, #8]
    3904:	2101      	movs	r1, #1
    3906:	eb03 0383 	add.w	r3, r3, r3, lsl #2
    390a:	eb06 0643 	add.w	r6, r6, r3, lsl #1
    390e:	3e30      	subs	r6, #48	; 0x30
    3910:	7226      	strb	r6, [r4, #8]
    3912:	e746      	b.n	37a2 <doprint+0x1be>
    3914:	213f      	movs	r1, #63	; 0x3f
    3916:	e00d      	b.n	3934 <doprint+0x350>
    3918:	2e25      	cmp	r6, #37	; 0x25
    391a:	d107      	bne.n	392c <doprint+0x348>
    391c:	2305      	movs	r3, #5
    391e:	72a3      	strb	r3, [r4, #10]
    3920:	2320      	movs	r3, #32
    3922:	7221      	strb	r1, [r4, #8]
    3924:	7263      	strb	r3, [r4, #9]
    3926:	462e      	mov	r6, r5
    3928:	2101      	movs	r1, #1
    392a:	e00b      	b.n	3944 <doprint+0x360>
    392c:	b90e      	cbnz	r6, 3932 <doprint+0x34e>
    392e:	7ae3      	ldrb	r3, [r4, #11]
    3930:	b153      	cbz	r3, 3948 <doprint+0x364>
    3932:	4631      	mov	r1, r6
    3934:	4620      	mov	r0, r4
    3936:	f7ff fd37 	bl	33a8 <print_putchar>
    393a:	2e00      	cmp	r6, #0
    393c:	f47f af30 	bne.w	37a0 <doprint+0x1bc>
    3940:	e002      	b.n	3948 <doprint+0x364>
    3942:	2100      	movs	r1, #0
    3944:	4635      	mov	r5, r6
    3946:	e72c      	b.n	37a2 <doprint+0x1be>
    3948:	b015      	add	sp, #84	; 0x54
    394a:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}
    394e:	bf00      	nop
    3950:	000048e0 	.word	0x000048e0
    3954:	3ff00000 	.word	0x3ff00000
    3958:	40240000 	.word	0x40240000

Disassembly of section .text.lgetchar:

0000395c <lgetchar>:
    395c:	4b01      	ldr	r3, [pc, #4]	; (3964 <lgetchar+0x8>)
    395e:	681b      	ldr	r3, [r3, #0]
    3960:	4718      	bx	r3
    3962:	bf00      	nop
    3964:	100009fc 	.word	0x100009fc

Disassembly of section .text.rprintf:

00003968 <rprintf>:
    3968:	b40e      	push	{r1, r2, r3}
    396a:	b53f      	push	{r0, r1, r2, r3, r4, r5, lr}
    396c:	aa07      	add	r2, sp, #28
    396e:	f852 1b04 	ldr.w	r1, [r2], #4
    3972:	2300      	movs	r3, #0
    3974:	f88d 0014 	strb.w	r0, [sp, #20]
    3978:	a802      	add	r0, sp, #8
    397a:	9302      	str	r3, [sp, #8]
    397c:	f88d 3013 	strb.w	r3, [sp, #19]
    3980:	9201      	str	r2, [sp, #4]
    3982:	f7ff fe2f 	bl	35e4 <doprint>
    3986:	2001      	movs	r0, #1
    3988:	b006      	add	sp, #24
    398a:	f85d eb04 	ldr.w	lr, [sp], #4
    398e:	b003      	add	sp, #12
    3990:	4770      	bx	lr

Disassembly of section .text.buffer_Init:

00003992 <buffer_Init>:
    3992:	2300      	movs	r3, #0
    3994:	6001      	str	r1, [r0, #0]
    3996:	8082      	strh	r2, [r0, #4]
    3998:	8103      	strh	r3, [r0, #8]
    399a:	80c3      	strh	r3, [r0, #6]
    399c:	4770      	bx	lr

Disassembly of section .text.buffer_GetFromFront:

0000399e <buffer_GetFromFront>:
    399e:	4603      	mov	r3, r0
    39a0:	88c0      	ldrh	r0, [r0, #6]
    39a2:	b510      	push	{r4, lr}
    39a4:	b280      	uxth	r0, r0
    39a6:	b1d8      	cbz	r0, 39e0 <buffer_GetFromFront+0x42>
    39a8:	6819      	ldr	r1, [r3, #0]
    39aa:	891a      	ldrh	r2, [r3, #8]
    39ac:	b292      	uxth	r2, r2
    39ae:	5c88      	ldrb	r0, [r1, r2]
    39b0:	891a      	ldrh	r2, [r3, #8]
    39b2:	3201      	adds	r2, #1
    39b4:	b292      	uxth	r2, r2
    39b6:	811a      	strh	r2, [r3, #8]
    39b8:	8919      	ldrh	r1, [r3, #8]
    39ba:	889a      	ldrh	r2, [r3, #4]
    39bc:	b289      	uxth	r1, r1
    39be:	b292      	uxth	r2, r2
    39c0:	4291      	cmp	r1, r2
    39c2:	d309      	bcc.n	39d8 <buffer_GetFromFront+0x3a>
    39c4:	889a      	ldrh	r2, [r3, #4]
    39c6:	b294      	uxth	r4, r2
    39c8:	891a      	ldrh	r2, [r3, #8]
    39ca:	b292      	uxth	r2, r2
    39cc:	fbb2 f1f4 	udiv	r1, r2, r4
    39d0:	fb04 2211 	mls	r2, r4, r1, r2
    39d4:	b292      	uxth	r2, r2
    39d6:	811a      	strh	r2, [r3, #8]
    39d8:	88da      	ldrh	r2, [r3, #6]
    39da:	3a01      	subs	r2, #1
    39dc:	b292      	uxth	r2, r2
    39de:	80da      	strh	r2, [r3, #6]
    39e0:	bd10      	pop	{r4, pc}

Disassembly of section .text.buffer_AddToEnd:

000039e2 <buffer_AddToEnd>:
    39e2:	88c2      	ldrh	r2, [r0, #6]
    39e4:	8883      	ldrh	r3, [r0, #4]
    39e6:	b292      	uxth	r2, r2
    39e8:	b29b      	uxth	r3, r3
    39ea:	429a      	cmp	r2, r3
    39ec:	b530      	push	{r4, r5, lr}
    39ee:	d212      	bcs.n	3a16 <buffer_AddToEnd+0x34>
    39f0:	6805      	ldr	r5, [r0, #0]
    39f2:	8903      	ldrh	r3, [r0, #8]
    39f4:	88c2      	ldrh	r2, [r0, #6]
    39f6:	8884      	ldrh	r4, [r0, #4]
    39f8:	b292      	uxth	r2, r2
    39fa:	b29b      	uxth	r3, r3
    39fc:	b2a4      	uxth	r4, r4
    39fe:	4413      	add	r3, r2
    3a00:	fb93 f2f4 	sdiv	r2, r3, r4
    3a04:	fb04 3312 	mls	r3, r4, r2, r3
    3a08:	54e9      	strb	r1, [r5, r3]
    3a0a:	88c3      	ldrh	r3, [r0, #6]
    3a0c:	3301      	adds	r3, #1
    3a0e:	b29b      	uxth	r3, r3
    3a10:	80c3      	strh	r3, [r0, #6]
    3a12:	2001      	movs	r0, #1
    3a14:	bd30      	pop	{r4, r5, pc}
    3a16:	f06f 0009 	mvn.w	r0, #9
    3a1a:	bd30      	pop	{r4, r5, pc}

Disassembly of section .text.buffer_IsEmpty:

00003a1c <buffer_IsEmpty>:
    3a1c:	88c0      	ldrh	r0, [r0, #6]
    3a1e:	b280      	uxth	r0, r0
    3a20:	fab0 f080 	clz	r0, r0
    3a24:	0940      	lsrs	r0, r0, #5
    3a26:	4770      	bx	lr

Disassembly of section .text.put_dump16:

00003a28 <put_dump16>:
    3a28:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
    3a2a:	4606      	mov	r6, r0
    3a2c:	4615      	mov	r5, r2
    3a2e:	2001      	movs	r0, #1
    3a30:	460a      	mov	r2, r1
    3a32:	491b      	ldr	r1, [pc, #108]	; (3aa0 <put_dump16+0x78>)
    3a34:	461f      	mov	r7, r3
    3a36:	f7ff ff97 	bl	3968 <rprintf>
    3a3a:	2300      	movs	r3, #0
    3a3c:	1c5c      	adds	r4, r3, #1
    3a3e:	b2db      	uxtb	r3, r3
    3a40:	42ab      	cmp	r3, r5
    3a42:	da06      	bge.n	3a52 <put_dump16+0x2a>
    3a44:	5cf2      	ldrb	r2, [r6, r3]
    3a46:	4917      	ldr	r1, [pc, #92]	; (3aa4 <put_dump16+0x7c>)
    3a48:	2001      	movs	r0, #1
    3a4a:	f7ff ff8d 	bl	3968 <rprintf>
    3a4e:	4623      	mov	r3, r4
    3a50:	e7f4      	b.n	3a3c <put_dump16+0x14>
    3a52:	b2ec      	uxtb	r4, r5
    3a54:	42bc      	cmp	r4, r7
    3a56:	d206      	bcs.n	3a66 <put_dump16+0x3e>
    3a58:	4913      	ldr	r1, [pc, #76]	; (3aa8 <put_dump16+0x80>)
    3a5a:	2001      	movs	r0, #1
    3a5c:	3401      	adds	r4, #1
    3a5e:	f7ff ff83 	bl	3968 <rprintf>
    3a62:	b2e4      	uxtb	r4, r4
    3a64:	e7f6      	b.n	3a54 <put_dump16+0x2c>
    3a66:	4911      	ldr	r1, [pc, #68]	; (3aac <put_dump16+0x84>)
    3a68:	2001      	movs	r0, #1
    3a6a:	f7ff ff7d 	bl	3968 <rprintf>
    3a6e:	2400      	movs	r4, #0
    3a70:	b2e3      	uxtb	r3, r4
    3a72:	429d      	cmp	r5, r3
    3a74:	dd0d      	ble.n	3a92 <put_dump16+0x6a>
    3a76:	5cf2      	ldrb	r2, [r6, r3]
    3a78:	2a1f      	cmp	r2, #31
    3a7a:	d804      	bhi.n	3a86 <put_dump16+0x5e>
    3a7c:	490c      	ldr	r1, [pc, #48]	; (3ab0 <put_dump16+0x88>)
    3a7e:	2001      	movs	r0, #1
    3a80:	f7ff ff72 	bl	3968 <rprintf>
    3a84:	e003      	b.n	3a8e <put_dump16+0x66>
    3a86:	490b      	ldr	r1, [pc, #44]	; (3ab4 <put_dump16+0x8c>)
    3a88:	2001      	movs	r0, #1
    3a8a:	f7ff ff6d 	bl	3968 <rprintf>
    3a8e:	3401      	adds	r4, #1
    3a90:	e7ee      	b.n	3a70 <put_dump16+0x48>
    3a92:	4909      	ldr	r1, [pc, #36]	; (3ab8 <put_dump16+0x90>)
    3a94:	2001      	movs	r0, #1
    3a96:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
    3a9a:	f7ff bf65 	b.w	3968 <rprintf>
    3a9e:	bf00      	nop
    3aa0:	0000548c 	.word	0x0000548c
    3aa4:	00005492 	.word	0x00005492
    3aa8:	00005498 	.word	0x00005498
    3aac:	0000549c 	.word	0x0000549c
    3ab0:	00005487 	.word	0x00005487
    3ab4:	00005489 	.word	0x00005489
    3ab8:	00005474 	.word	0x00005474

Disassembly of section .text.xatoi:

00003abc <xatoi>:
    3abc:	b570      	push	{r4, r5, r6, lr}
    3abe:	6802      	ldr	r2, [r0, #0]
    3ac0:	7813      	ldrb	r3, [r2, #0]
    3ac2:	2b20      	cmp	r3, #32
    3ac4:	d102      	bne.n	3acc <xatoi+0x10>
    3ac6:	3201      	adds	r2, #1
    3ac8:	6002      	str	r2, [r0, #0]
    3aca:	e7f8      	b.n	3abe <xatoi+0x2>
    3acc:	2b2d      	cmp	r3, #45	; 0x2d
    3ace:	bf01      	itttt	eq
    3ad0:	1c53      	addeq	r3, r2, #1
    3ad2:	6003      	streq	r3, [r0, #0]
    3ad4:	7853      	ldrbeq	r3, [r2, #1]
    3ad6:	2601      	moveq	r6, #1
    3ad8:	bf18      	it	ne
    3ada:	2600      	movne	r6, #0
    3adc:	2b30      	cmp	r3, #48	; 0x30
    3ade:	d11c      	bne.n	3b1a <xatoi+0x5e>
    3ae0:	6802      	ldr	r2, [r0, #0]
    3ae2:	1c53      	adds	r3, r2, #1
    3ae4:	6003      	str	r3, [r0, #0]
    3ae6:	7853      	ldrb	r3, [r2, #1]
    3ae8:	2b20      	cmp	r3, #32
    3aea:	d802      	bhi.n	3af2 <xatoi+0x36>
    3aec:	2300      	movs	r3, #0
    3aee:	600b      	str	r3, [r1, #0]
    3af0:	e036      	b.n	3b60 <xatoi+0xa4>
    3af2:	2b78      	cmp	r3, #120	; 0x78
    3af4:	d104      	bne.n	3b00 <xatoi+0x44>
    3af6:	1c93      	adds	r3, r2, #2
    3af8:	6003      	str	r3, [r0, #0]
    3afa:	7893      	ldrb	r3, [r2, #2]
    3afc:	2510      	movs	r5, #16
    3afe:	e013      	b.n	3b28 <xatoi+0x6c>
    3b00:	2b62      	cmp	r3, #98	; 0x62
    3b02:	d104      	bne.n	3b0e <xatoi+0x52>
    3b04:	1c93      	adds	r3, r2, #2
    3b06:	6003      	str	r3, [r0, #0]
    3b08:	7893      	ldrb	r3, [r2, #2]
    3b0a:	2502      	movs	r5, #2
    3b0c:	e00c      	b.n	3b28 <xatoi+0x6c>
    3b0e:	f1a3 0230 	sub.w	r2, r3, #48	; 0x30
    3b12:	2a09      	cmp	r2, #9
    3b14:	d907      	bls.n	3b26 <xatoi+0x6a>
    3b16:	2000      	movs	r0, #0
    3b18:	bd70      	pop	{r4, r5, r6, pc}
    3b1a:	f1a3 0231 	sub.w	r2, r3, #49	; 0x31
    3b1e:	2a08      	cmp	r2, #8
    3b20:	d8f9      	bhi.n	3b16 <xatoi+0x5a>
    3b22:	250a      	movs	r5, #10
    3b24:	e000      	b.n	3b28 <xatoi+0x6c>
    3b26:	2508      	movs	r5, #8
    3b28:	2400      	movs	r4, #0
    3b2a:	2b20      	cmp	r3, #32
    3b2c:	d915      	bls.n	3b5a <xatoi+0x9e>
    3b2e:	2b60      	cmp	r3, #96	; 0x60
    3b30:	bf84      	itt	hi
    3b32:	3b20      	subhi	r3, #32
    3b34:	b2db      	uxtbhi	r3, r3
    3b36:	f1a3 0230 	sub.w	r2, r3, #48	; 0x30
    3b3a:	b2d2      	uxtb	r2, r2
    3b3c:	2a10      	cmp	r2, #16
    3b3e:	d903      	bls.n	3b48 <xatoi+0x8c>
    3b40:	3b37      	subs	r3, #55	; 0x37
    3b42:	b2da      	uxtb	r2, r3
    3b44:	2a09      	cmp	r2, #9
    3b46:	d9e6      	bls.n	3b16 <xatoi+0x5a>
    3b48:	42aa      	cmp	r2, r5
    3b4a:	d2e4      	bcs.n	3b16 <xatoi+0x5a>
    3b4c:	6803      	ldr	r3, [r0, #0]
    3b4e:	fb04 2405 	mla	r4, r4, r5, r2
    3b52:	1c5a      	adds	r2, r3, #1
    3b54:	6002      	str	r2, [r0, #0]
    3b56:	785b      	ldrb	r3, [r3, #1]
    3b58:	e7e7      	b.n	3b2a <xatoi+0x6e>
    3b5a:	b106      	cbz	r6, 3b5e <xatoi+0xa2>
    3b5c:	4264      	negs	r4, r4
    3b5e:	600c      	str	r4, [r1, #0]
    3b60:	2001      	movs	r0, #1
    3b62:	bd70      	pop	{r4, r5, r6, pc}

Disassembly of section .text.ledError_Init:

00003b64 <ledError_Init>:
    3b64:	4a04      	ldr	r2, [pc, #16]	; (3b78 <ledError_Init+0x14>)
    3b66:	6813      	ldr	r3, [r2, #0]
    3b68:	f043 5300 	orr.w	r3, r3, #536870912	; 0x20000000
    3b6c:	6013      	str	r3, [r2, #0]
    3b6e:	69d3      	ldr	r3, [r2, #28]
    3b70:	f043 5300 	orr.w	r3, r3, #536870912	; 0x20000000
    3b74:	61d3      	str	r3, [r2, #28]
    3b76:	4770      	bx	lr
    3b78:	2009c080 	.word	0x2009c080

Disassembly of section .text.ledError_Tick:

00003b7c <ledError_Tick>:
    3b7c:	4b1b      	ldr	r3, [pc, #108]	; (3bec <ledError_Tick+0x70>)
    3b7e:	b570      	push	{r4, r5, r6, lr}
    3b80:	681b      	ldr	r3, [r3, #0]
    3b82:	2b00      	cmp	r3, #0
    3b84:	d031      	beq.n	3bea <ledError_Tick+0x6e>
    3b86:	4a1a      	ldr	r2, [pc, #104]	; (3bf0 <ledError_Tick+0x74>)
    3b88:	6813      	ldr	r3, [r2, #0]
    3b8a:	2b00      	cmp	r3, #0
    3b8c:	d12b      	bne.n	3be6 <ledError_Tick+0x6a>
    3b8e:	4b19      	ldr	r3, [pc, #100]	; (3bf4 <ledError_Tick+0x78>)
    3b90:	4c19      	ldr	r4, [pc, #100]	; (3bf8 <ledError_Tick+0x7c>)
    3b92:	6819      	ldr	r1, [r3, #0]
    3b94:	b931      	cbnz	r1, 3ba4 <ledError_Tick+0x28>
    3b96:	f44f 717a 	mov.w	r1, #1000	; 0x3e8
    3b9a:	6019      	str	r1, [r3, #0]
    3b9c:	4917      	ldr	r1, [pc, #92]	; (3bfc <ledError_Tick+0x80>)
    3b9e:	6809      	ldr	r1, [r1, #0]
    3ba0:	0049      	lsls	r1, r1, #1
    3ba2:	6021      	str	r1, [r4, #0]
    3ba4:	6821      	ldr	r1, [r4, #0]
    3ba6:	2900      	cmp	r1, #0
    3ba8:	dd11      	ble.n	3bce <ledError_Tick+0x52>
    3baa:	4b15      	ldr	r3, [pc, #84]	; (3c00 <ledError_Tick+0x84>)
    3bac:	6818      	ldr	r0, [r3, #0]
    3bae:	b108      	cbz	r0, 3bb4 <ledError_Tick+0x38>
    3bb0:	4e14      	ldr	r6, [pc, #80]	; (3c04 <ledError_Tick+0x88>)
    3bb2:	e000      	b.n	3bb6 <ledError_Tick+0x3a>
    3bb4:	4e14      	ldr	r6, [pc, #80]	; (3c08 <ledError_Tick+0x8c>)
    3bb6:	6835      	ldr	r5, [r6, #0]
    3bb8:	f080 0001 	eor.w	r0, r0, #1
    3bbc:	f045 5500 	orr.w	r5, r5, #536870912	; 0x20000000
    3bc0:	6035      	str	r5, [r6, #0]
    3bc2:	3901      	subs	r1, #1
    3bc4:	25fa      	movs	r5, #250	; 0xfa
    3bc6:	6015      	str	r5, [r2, #0]
    3bc8:	6018      	str	r0, [r3, #0]
    3bca:	6021      	str	r1, [r4, #0]
    3bcc:	e009      	b.n	3be2 <ledError_Tick+0x66>
    3bce:	480d      	ldr	r0, [pc, #52]	; (3c04 <ledError_Tick+0x88>)
    3bd0:	681b      	ldr	r3, [r3, #0]
    3bd2:	6801      	ldr	r1, [r0, #0]
    3bd4:	f041 5100 	orr.w	r1, r1, #536870912	; 0x20000000
    3bd8:	6001      	str	r1, [r0, #0]
    3bda:	b133      	cbz	r3, 3bea <ledError_Tick+0x6e>
    3bdc:	4905      	ldr	r1, [pc, #20]	; (3bf4 <ledError_Tick+0x78>)
    3bde:	3b01      	subs	r3, #1
    3be0:	600b      	str	r3, [r1, #0]
    3be2:	6813      	ldr	r3, [r2, #0]
    3be4:	b10b      	cbz	r3, 3bea <ledError_Tick+0x6e>
    3be6:	3b01      	subs	r3, #1
    3be8:	6013      	str	r3, [r2, #0]
    3bea:	bd70      	pop	{r4, r5, r6, pc}
    3bec:	10000a14 	.word	0x10000a14
    3bf0:	10000a0c 	.word	0x10000a0c
    3bf4:	10000a1c 	.word	0x10000a1c
    3bf8:	10000a20 	.word	0x10000a20
    3bfc:	10000a10 	.word	0x10000a10
    3c00:	10000a18 	.word	0x10000a18
    3c04:	2009c09c 	.word	0x2009c09c
    3c08:	2009c098 	.word	0x2009c098

Disassembly of section .text.gKey_Init:

00003c0c <gKey_Init>:
    3c0c:	4b04      	ldr	r3, [pc, #16]	; (3c20 <gKey_Init+0x14>)
    3c0e:	6018      	str	r0, [r3, #0]
    3c10:	4b04      	ldr	r3, [pc, #16]	; (3c24 <gKey_Init+0x18>)
    3c12:	6019      	str	r1, [r3, #0]
    3c14:	4b04      	ldr	r3, [pc, #16]	; (3c28 <gKey_Init+0x1c>)
    3c16:	601a      	str	r2, [r3, #0]
    3c18:	4b04      	ldr	r3, [pc, #16]	; (3c2c <gKey_Init+0x20>)
    3c1a:	2200      	movs	r2, #0
    3c1c:	601a      	str	r2, [r3, #0]
    3c1e:	4770      	bx	lr
    3c20:	10000a38 	.word	0x10000a38
    3c24:	10000a3c 	.word	0x10000a3c
    3c28:	10000a2c 	.word	0x10000a2c
    3c2c:	100007e8 	.word	0x100007e8

Disassembly of section .text.gKey_Tick:

00003c30 <gKey_Tick>:
    3c30:	4b03      	ldr	r3, [pc, #12]	; (3c40 <gKey_Tick+0x10>)
    3c32:	681a      	ldr	r2, [r3, #0]
    3c34:	b112      	cbz	r2, 3c3c <gKey_Tick+0xc>
    3c36:	681a      	ldr	r2, [r3, #0]
    3c38:	3a01      	subs	r2, #1
    3c3a:	601a      	str	r2, [r3, #0]
    3c3c:	4770      	bx	lr
    3c3e:	bf00      	nop
    3c40:	10000a30 	.word	0x10000a30

Disassembly of section .text.gKey_Process:

00003c44 <gKey_Process>:
    3c44:	b570      	push	{r4, r5, r6, lr}
    3c46:	4a21      	ldr	r2, [pc, #132]	; (3ccc <gKey_Process+0x88>)
    3c48:	4d21      	ldr	r5, [pc, #132]	; (3cd0 <gKey_Process+0x8c>)
    3c4a:	7813      	ldrb	r3, [r2, #0]
    3c4c:	7010      	strb	r0, [r2, #0]
    3c4e:	782a      	ldrb	r2, [r5, #0]
    3c50:	4604      	mov	r4, r0
    3c52:	b112      	cbz	r2, 3c5a <gKey_Process+0x16>
    3c54:	2a01      	cmp	r2, #1
    3c56:	d018      	beq.n	3c8a <gKey_Process+0x46>
    3c58:	bd70      	pop	{r4, r5, r6, pc}
    3c5a:	491e      	ldr	r1, [pc, #120]	; (3cd4 <gKey_Process+0x90>)
    3c5c:	260a      	movs	r6, #10
    3c5e:	600e      	str	r6, [r1, #0]
    3c60:	491d      	ldr	r1, [pc, #116]	; (3cd8 <gKey_Process+0x94>)
    3c62:	600a      	str	r2, [r1, #0]
    3c64:	2b00      	cmp	r3, #0
    3c66:	d12f      	bne.n	3cc8 <gKey_Process+0x84>
    3c68:	2800      	cmp	r0, #0
    3c6a:	d02d      	beq.n	3cc8 <gKey_Process+0x84>
    3c6c:	4b1b      	ldr	r3, [pc, #108]	; (3cdc <gKey_Process+0x98>)
    3c6e:	681b      	ldr	r3, [r3, #0]
    3c70:	b103      	cbz	r3, 3c74 <gKey_Process+0x30>
    3c72:	4798      	blx	r3
    3c74:	4b1a      	ldr	r3, [pc, #104]	; (3ce0 <gKey_Process+0x9c>)
    3c76:	681b      	ldr	r3, [r3, #0]
    3c78:	b10b      	cbz	r3, 3c7e <gKey_Process+0x3a>
    3c7a:	4620      	mov	r0, r4
    3c7c:	4798      	blx	r3
    3c7e:	4b19      	ldr	r3, [pc, #100]	; (3ce4 <gKey_Process+0xa0>)
    3c80:	f44f 72fa 	mov.w	r2, #500	; 0x1f4
    3c84:	601a      	str	r2, [r3, #0]
    3c86:	2301      	movs	r3, #1
    3c88:	e007      	b.n	3c9a <gKey_Process+0x56>
    3c8a:	b143      	cbz	r3, 3c9e <gKey_Process+0x5a>
    3c8c:	b938      	cbnz	r0, 3c9e <gKey_Process+0x5a>
    3c8e:	4a16      	ldr	r2, [pc, #88]	; (3ce8 <gKey_Process+0xa4>)
    3c90:	6812      	ldr	r2, [r2, #0]
    3c92:	b10a      	cbz	r2, 3c98 <gKey_Process+0x54>
    3c94:	4618      	mov	r0, r3
    3c96:	4790      	blx	r2
    3c98:	2300      	movs	r3, #0
    3c9a:	702b      	strb	r3, [r5, #0]
    3c9c:	bd70      	pop	{r4, r5, r6, pc}
    3c9e:	4b11      	ldr	r3, [pc, #68]	; (3ce4 <gKey_Process+0xa0>)
    3ca0:	681a      	ldr	r2, [r3, #0]
    3ca2:	b98a      	cbnz	r2, 3cc8 <gKey_Process+0x84>
    3ca4:	2264      	movs	r2, #100	; 0x64
    3ca6:	601a      	str	r2, [r3, #0]
    3ca8:	4b0d      	ldr	r3, [pc, #52]	; (3ce0 <gKey_Process+0x9c>)
    3caa:	681b      	ldr	r3, [r3, #0]
    3cac:	b10b      	cbz	r3, 3cb2 <gKey_Process+0x6e>
    3cae:	4620      	mov	r0, r4
    3cb0:	4798      	blx	r3
    3cb2:	4a08      	ldr	r2, [pc, #32]	; (3cd4 <gKey_Process+0x90>)
    3cb4:	6813      	ldr	r3, [r2, #0]
    3cb6:	b10b      	cbz	r3, 3cbc <gKey_Process+0x78>
    3cb8:	3b01      	subs	r3, #1
    3cba:	e004      	b.n	3cc6 <gKey_Process+0x82>
    3cbc:	230a      	movs	r3, #10
    3cbe:	6013      	str	r3, [r2, #0]
    3cc0:	4a05      	ldr	r2, [pc, #20]	; (3cd8 <gKey_Process+0x94>)
    3cc2:	6813      	ldr	r3, [r2, #0]
    3cc4:	3301      	adds	r3, #1
    3cc6:	6013      	str	r3, [r2, #0]
    3cc8:	bd70      	pop	{r4, r5, r6, pc}
    3cca:	bf00      	nop
    3ccc:	10000a34 	.word	0x10000a34
    3cd0:	10000a28 	.word	0x10000a28
    3cd4:	10000a24 	.word	0x10000a24
    3cd8:	100007e8 	.word	0x100007e8
    3cdc:	10000a38 	.word	0x10000a38
    3ce0:	10000a3c 	.word	0x10000a3c
    3ce4:	10000a30 	.word	0x10000a30
    3ce8:	10000a2c 	.word	0x10000a2c

Disassembly of section .text.beep_SetType:

00003cec <beep_SetType>:
    3cec:	4b20      	ldr	r3, [pc, #128]	; (3d70 <beep_SetType+0x84>)
    3cee:	2200      	movs	r2, #0
    3cf0:	615a      	str	r2, [r3, #20]
    3cf2:	611a      	str	r2, [r3, #16]
    3cf4:	61da      	str	r2, [r3, #28]
    3cf6:	619a      	str	r2, [r3, #24]
    3cf8:	625a      	str	r2, [r3, #36]	; 0x24
    3cfa:	621a      	str	r2, [r3, #32]
    3cfc:	60da      	str	r2, [r3, #12]
    3cfe:	62da      	str	r2, [r3, #44]	; 0x2c
    3d00:	685a      	ldr	r2, [r3, #4]
    3d02:	3a02      	subs	r2, #2
    3d04:	2a04      	cmp	r2, #4
    3d06:	d832      	bhi.n	3d6e <beep_SetType+0x82>
    3d08:	e8df f002 	tbb	[pc, r2]
    3d0c:	1b090313 	.word	0x1b090313
    3d10:	25          	.byte	0x25
    3d11:	00          	.byte	0x00
    3d12:	2201      	movs	r2, #1
    3d14:	609a      	str	r2, [r3, #8]
    3d16:	2232      	movs	r2, #50	; 0x32
    3d18:	611a      	str	r2, [r3, #16]
    3d1a:	615a      	str	r2, [r3, #20]
    3d1c:	e025      	b.n	3d6a <beep_SetType+0x7e>
    3d1e:	2203      	movs	r2, #3
    3d20:	609a      	str	r2, [r3, #8]
    3d22:	2232      	movs	r2, #50	; 0x32
    3d24:	615a      	str	r2, [r3, #20]
    3d26:	611a      	str	r2, [r3, #16]
    3d28:	61da      	str	r2, [r3, #28]
    3d2a:	619a      	str	r2, [r3, #24]
    3d2c:	625a      	str	r2, [r3, #36]	; 0x24
    3d2e:	621a      	str	r2, [r3, #32]
    3d30:	e01b      	b.n	3d6a <beep_SetType+0x7e>
    3d32:	2201      	movs	r2, #1
    3d34:	609a      	str	r2, [r3, #8]
    3d36:	f44f 7148 	mov.w	r1, #800	; 0x320
    3d3a:	2264      	movs	r2, #100	; 0x64
    3d3c:	611a      	str	r2, [r3, #16]
    3d3e:	6159      	str	r1, [r3, #20]
    3d40:	e014      	b.n	3d6c <beep_SetType+0x80>
    3d42:	2202      	movs	r2, #2
    3d44:	609a      	str	r2, [r3, #8]
    3d46:	2264      	movs	r2, #100	; 0x64
    3d48:	611a      	str	r2, [r3, #16]
    3d4a:	615a      	str	r2, [r3, #20]
    3d4c:	619a      	str	r2, [r3, #24]
    3d4e:	61da      	str	r2, [r3, #28]
    3d50:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0
    3d54:	e00a      	b.n	3d6c <beep_SetType+0x80>
    3d56:	2203      	movs	r2, #3
    3d58:	609a      	str	r2, [r3, #8]
    3d5a:	2264      	movs	r2, #100	; 0x64
    3d5c:	611a      	str	r2, [r3, #16]
    3d5e:	615a      	str	r2, [r3, #20]
    3d60:	2232      	movs	r2, #50	; 0x32
    3d62:	619a      	str	r2, [r3, #24]
    3d64:	61da      	str	r2, [r3, #28]
    3d66:	621a      	str	r2, [r3, #32]
    3d68:	625a      	str	r2, [r3, #36]	; 0x24
    3d6a:	2200      	movs	r2, #0
    3d6c:	629a      	str	r2, [r3, #40]	; 0x28
    3d6e:	4770      	bx	lr
    3d70:	10000a40 	.word	0x10000a40

Disassembly of section .text.beep_Init:

00003d74 <beep_Init>:
    3d74:	4a07      	ldr	r2, [pc, #28]	; (3d94 <beep_Init+0x20>)
    3d76:	6813      	ldr	r3, [r2, #0]
    3d78:	f443 0380 	orr.w	r3, r3, #4194304	; 0x400000
    3d7c:	6013      	str	r3, [r2, #0]
    3d7e:	4b06      	ldr	r3, [pc, #24]	; (3d98 <beep_Init+0x24>)
    3d80:	f44f 0280 	mov.w	r2, #4194304	; 0x400000
    3d84:	601a      	str	r2, [r3, #0]
    3d86:	4b05      	ldr	r3, [pc, #20]	; (3d9c <beep_Init+0x28>)
    3d88:	781a      	ldrb	r2, [r3, #0]
    3d8a:	f36f 0200 	bfc	r2, #0, #1
    3d8e:	701a      	strb	r2, [r3, #0]
    3d90:	4770      	bx	lr
    3d92:	bf00      	nop
    3d94:	2009c000 	.word	0x2009c000
    3d98:	2009c01c 	.word	0x2009c01c
    3d9c:	10000a40 	.word	0x10000a40

Disassembly of section .text.beep_Play:

00003da0 <beep_Play>:
    3da0:	b510      	push	{r4, lr}
    3da2:	4c07      	ldr	r4, [pc, #28]	; (3dc0 <beep_Play+0x20>)
    3da4:	b130      	cbz	r0, 3db4 <beep_Play+0x14>
    3da6:	6060      	str	r0, [r4, #4]
    3da8:	f7ff ffa0 	bl	3cec <beep_SetType>
    3dac:	7823      	ldrb	r3, [r4, #0]
    3dae:	f043 0301 	orr.w	r3, r3, #1
    3db2:	e002      	b.n	3dba <beep_Play+0x1a>
    3db4:	7823      	ldrb	r3, [r4, #0]
    3db6:	f360 0300 	bfi	r3, r0, #0, #1
    3dba:	7023      	strb	r3, [r4, #0]
    3dbc:	bd10      	pop	{r4, pc}
    3dbe:	bf00      	nop
    3dc0:	10000a40 	.word	0x10000a40

Disassembly of section .text.beep_Tick:

00003dc4 <beep_Tick>:
    3dc4:	481f      	ldr	r0, [pc, #124]	; (3e44 <beep_Tick+0x80>)
    3dc6:	b510      	push	{r4, lr}
    3dc8:	7802      	ldrb	r2, [r0, #0]
    3dca:	07d3      	lsls	r3, r2, #31
    3dcc:	d403      	bmi.n	3dd6 <beep_Tick+0x12>
    3dce:	f44f 0280 	mov.w	r2, #4194304	; 0x400000
    3dd2:	4b1d      	ldr	r3, [pc, #116]	; (3e48 <beep_Tick+0x84>)
    3dd4:	e005      	b.n	3de2 <beep_Tick+0x1e>
    3dd6:	6843      	ldr	r3, [r0, #4]
    3dd8:	2b01      	cmp	r3, #1
    3dda:	d104      	bne.n	3de6 <beep_Tick+0x22>
    3ddc:	4b1b      	ldr	r3, [pc, #108]	; (3e4c <beep_Tick+0x88>)
    3dde:	f44f 0280 	mov.w	r2, #4194304	; 0x400000
    3de2:	601a      	str	r2, [r3, #0]
    3de4:	bd10      	pop	{r4, pc}
    3de6:	6ac3      	ldr	r3, [r0, #44]	; 0x2c
    3de8:	b10b      	cbz	r3, 3dee <beep_Tick+0x2a>
    3dea:	3b01      	subs	r3, #1
    3dec:	e022      	b.n	3e34 <beep_Tick+0x70>
    3dee:	68c1      	ldr	r1, [r0, #12]
    3df0:	1c8b      	adds	r3, r1, #2
    3df2:	f850 4033 	ldr.w	r4, [r0, r3, lsl #3]
    3df6:	b13c      	cbz	r4, 3e08 <beep_Tick+0x44>
    3df8:	4a14      	ldr	r2, [pc, #80]	; (3e4c <beep_Tick+0x88>)
    3dfa:	f44f 0180 	mov.w	r1, #4194304	; 0x400000
    3dfe:	3c01      	subs	r4, #1
    3e00:	6011      	str	r1, [r2, #0]
    3e02:	f840 4033 	str.w	r4, [r0, r3, lsl #3]
    3e06:	bd10      	pop	{r4, pc}
    3e08:	eb00 03c3 	add.w	r3, r0, r3, lsl #3
    3e0c:	685c      	ldr	r4, [r3, #4]
    3e0e:	b134      	cbz	r4, 3e1e <beep_Tick+0x5a>
    3e10:	4a0d      	ldr	r2, [pc, #52]	; (3e48 <beep_Tick+0x84>)
    3e12:	f44f 0180 	mov.w	r1, #4194304	; 0x400000
    3e16:	3c01      	subs	r4, #1
    3e18:	6011      	str	r1, [r2, #0]
    3e1a:	605c      	str	r4, [r3, #4]
    3e1c:	bd10      	pop	{r4, pc}
    3e1e:	6883      	ldr	r3, [r0, #8]
    3e20:	4299      	cmp	r1, r3
    3e22:	d202      	bcs.n	3e2a <beep_Tick+0x66>
    3e24:	3101      	adds	r1, #1
    3e26:	60c1      	str	r1, [r0, #12]
    3e28:	bd10      	pop	{r4, pc}
    3e2a:	6a81      	ldr	r1, [r0, #40]	; 0x28
    3e2c:	b121      	cbz	r1, 3e38 <beep_Tick+0x74>
    3e2e:	f7ff ff5d 	bl	3cec <beep_SetType>
    3e32:	6a83      	ldr	r3, [r0, #40]	; 0x28
    3e34:	62c3      	str	r3, [r0, #44]	; 0x2c
    3e36:	bd10      	pop	{r4, pc}
    3e38:	4613      	mov	r3, r2
    3e3a:	f361 0300 	bfi	r3, r1, #0, #1
    3e3e:	7003      	strb	r3, [r0, #0]
    3e40:	bd10      	pop	{r4, pc}
    3e42:	bf00      	nop
    3e44:	10000a40 	.word	0x10000a40
    3e48:	2009c01c 	.word	0x2009c01c
    3e4c:	2009c018 	.word	0x2009c018

Disassembly of section .text.cli_GetLine:

00003e50 <cli_GetLine>:
    3e50:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
    3e52:	4f35      	ldr	r7, [pc, #212]	; (3f28 <cli_GetLine+0xd8>)
    3e54:	4604      	mov	r4, r0
    3e56:	783b      	ldrb	r3, [r7, #0]
    3e58:	460e      	mov	r6, r1
    3e5a:	b143      	cbz	r3, 3e6e <cli_GetLine+0x1e>
    3e5c:	4933      	ldr	r1, [pc, #204]	; (3f2c <cli_GetLine+0xdc>)
    3e5e:	2001      	movs	r0, #1
    3e60:	f7ff fd82 	bl	3968 <rprintf>
    3e64:	4b32      	ldr	r3, [pc, #200]	; (3f30 <cli_GetLine+0xe0>)
    3e66:	601c      	str	r4, [r3, #0]
    3e68:	2300      	movs	r3, #0
    3e6a:	7023      	strb	r3, [r4, #0]
    3e6c:	703b      	strb	r3, [r7, #0]
    3e6e:	4d31      	ldr	r5, [pc, #196]	; (3f34 <cli_GetLine+0xe4>)
    3e70:	4628      	mov	r0, r5
    3e72:	f7ff fd73 	bl	395c <lgetchar>
    3e76:	2801      	cmp	r0, #1
    3e78:	4603      	mov	r3, r0
    3e7a:	d150      	bne.n	3f1e <cli_GetLine+0xce>
    3e7c:	782a      	ldrb	r2, [r5, #0]
    3e7e:	2a0d      	cmp	r2, #13
    3e80:	d010      	beq.n	3ea4 <cli_GetLine+0x54>
    3e82:	d804      	bhi.n	3e8e <cli_GetLine+0x3e>
    3e84:	2a08      	cmp	r2, #8
    3e86:	d018      	beq.n	3eba <cli_GetLine+0x6a>
    3e88:	2a0a      	cmp	r2, #10
    3e8a:	d00b      	beq.n	3ea4 <cli_GetLine+0x54>
    3e8c:	e031      	b.n	3ef2 <cli_GetLine+0xa2>
    3e8e:	2a15      	cmp	r2, #21
    3e90:	d101      	bne.n	3e96 <cli_GetLine+0x46>
    3e92:	4d27      	ldr	r5, [pc, #156]	; (3f30 <cli_GetLine+0xe0>)
    3e94:	e01f      	b.n	3ed6 <cli_GetLine+0x86>
    3e96:	d32c      	bcc.n	3ef2 <cli_GetLine+0xa2>
    3e98:	2afe      	cmp	r2, #254	; 0xfe
    3e9a:	d32a      	bcc.n	3ef2 <cli_GetLine+0xa2>
    3e9c:	7022      	strb	r2, [r4, #0]
    3e9e:	2200      	movs	r2, #0
    3ea0:	7062      	strb	r2, [r4, #1]
    3ea2:	e03f      	b.n	3f24 <cli_GetLine+0xd4>
    3ea4:	4924      	ldr	r1, [pc, #144]	; (3f38 <cli_GetLine+0xe8>)
    3ea6:	2001      	movs	r0, #1
    3ea8:	f7ff fd5e 	bl	3968 <rprintf>
    3eac:	2301      	movs	r3, #1
    3eae:	703b      	strb	r3, [r7, #0]
    3eb0:	4620      	mov	r0, r4
    3eb2:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
    3eb6:	f000 bcd7 	b.w	4868 <strlen>
    3eba:	4a1d      	ldr	r2, [pc, #116]	; (3f30 <cli_GetLine+0xe0>)
    3ebc:	6813      	ldr	r3, [r2, #0]
    3ebe:	429c      	cmp	r4, r3
    3ec0:	f04f 0400 	mov.w	r4, #0
    3ec4:	d22d      	bcs.n	3f22 <cli_GetLine+0xd2>
    3ec6:	1e59      	subs	r1, r3, #1
    3ec8:	6011      	str	r1, [r2, #0]
    3eca:	f803 4c01 	strb.w	r4, [r3, #-1]
    3ece:	491b      	ldr	r1, [pc, #108]	; (3f3c <cli_GetLine+0xec>)
    3ed0:	f7ff fd4a 	bl	3968 <rprintf>
    3ed4:	e025      	b.n	3f22 <cli_GetLine+0xd2>
    3ed6:	682b      	ldr	r3, [r5, #0]
    3ed8:	429c      	cmp	r4, r3
    3eda:	d007      	beq.n	3eec <cli_GetLine+0x9c>
    3edc:	4917      	ldr	r1, [pc, #92]	; (3f3c <cli_GetLine+0xec>)
    3ede:	2001      	movs	r0, #1
    3ee0:	f7ff fd42 	bl	3968 <rprintf>
    3ee4:	682b      	ldr	r3, [r5, #0]
    3ee6:	3b01      	subs	r3, #1
    3ee8:	602b      	str	r3, [r5, #0]
    3eea:	e7f4      	b.n	3ed6 <cli_GetLine+0x86>
    3eec:	2300      	movs	r3, #0
    3eee:	7023      	strb	r3, [r4, #0]
    3ef0:	e018      	b.n	3f24 <cli_GetLine+0xd4>
    3ef2:	490f      	ldr	r1, [pc, #60]	; (3f30 <cli_GetLine+0xe0>)
    3ef4:	3e01      	subs	r6, #1
    3ef6:	680b      	ldr	r3, [r1, #0]
    3ef8:	4434      	add	r4, r6
    3efa:	42a3      	cmp	r3, r4
    3efc:	d20f      	bcs.n	3f1e <cli_GetLine+0xce>
    3efe:	f1a2 0020 	sub.w	r0, r2, #32
    3f02:	285e      	cmp	r0, #94	; 0x5e
    3f04:	f04f 0400 	mov.w	r4, #0
    3f08:	d80b      	bhi.n	3f22 <cli_GetLine+0xd2>
    3f0a:	1c58      	adds	r0, r3, #1
    3f0c:	701a      	strb	r2, [r3, #0]
    3f0e:	6008      	str	r0, [r1, #0]
    3f10:	705c      	strb	r4, [r3, #1]
    3f12:	782a      	ldrb	r2, [r5, #0]
    3f14:	490a      	ldr	r1, [pc, #40]	; (3f40 <cli_GetLine+0xf0>)
    3f16:	2001      	movs	r0, #1
    3f18:	f7ff fd26 	bl	3968 <rprintf>
    3f1c:	e001      	b.n	3f22 <cli_GetLine+0xd2>
    3f1e:	2300      	movs	r3, #0
    3f20:	e000      	b.n	3f24 <cli_GetLine+0xd4>
    3f22:	4623      	mov	r3, r4
    3f24:	4618      	mov	r0, r3
    3f26:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    3f28:	10000080 	.word	0x10000080
    3f2c:	000054a0 	.word	0x000054a0
    3f30:	10000a74 	.word	0x10000a74
    3f34:	10000a78 	.word	0x10000a78
    3f38:	00005474 	.word	0x00005474
    3f3c:	000054a3 	.word	0x000054a3
    3f40:	00005489 	.word	0x00005489

Disassembly of section .text.cli_Help:

00003f44 <cli_Help>:
    3f44:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
    3f48:	2500      	movs	r5, #0
    3f4a:	462c      	mov	r4, r5
    3f4c:	b08a      	sub	sp, #40	; 0x28
    3f4e:	2220      	movs	r2, #32
    3f50:	4e1e      	ldr	r6, [pc, #120]	; (3fcc <cli_Help+0x88>)
    3f52:	4611      	mov	r1, r2
    3f54:	a802      	add	r0, sp, #8
    3f56:	f000 fc39 	bl	47cc <memset>
    3f5a:	6837      	ldr	r7, [r6, #0]
    3f5c:	3514      	adds	r5, #20
    3f5e:	197b      	adds	r3, r7, r5
    3f60:	f853 0c14 	ldr.w	r0, [r3, #-20]
    3f64:	b128      	cbz	r0, 3f72 <cli_Help+0x2e>
    3f66:	f000 fc7f 	bl	4868 <strlen>
    3f6a:	4284      	cmp	r4, r0
    3f6c:	bfb8      	it	lt
    3f6e:	4604      	movlt	r4, r0
    3f70:	e7f4      	b.n	3f5c <cli_Help+0x18>
    3f72:	ab0a      	add	r3, sp, #40	; 0x28
    3f74:	441c      	add	r4, r3
    3f76:	f804 0c20 	strb.w	r0, [r4, #-32]
    3f7a:	4604      	mov	r4, r0
    3f7c:	6833      	ldr	r3, [r6, #0]
    3f7e:	591d      	ldr	r5, [r3, r4]
    3f80:	191a      	adds	r2, r3, r4
    3f82:	b1dd      	cbz	r5, 3fbc <cli_Help+0x78>
    3f84:	f892 8006 	ldrb.w	r8, [r2, #6]
    3f88:	4628      	mov	r0, r5
    3f8a:	f1b8 0f01 	cmp.w	r8, #1
    3f8e:	68d7      	ldr	r7, [r2, #12]
    3f90:	d108      	bne.n	3fa4 <cli_Help+0x60>
    3f92:	f000 fc69 	bl	4868 <strlen>
    3f96:	ab02      	add	r3, sp, #8
    3f98:	4403      	add	r3, r0
    3f9a:	9700      	str	r7, [sp, #0]
    3f9c:	462a      	mov	r2, r5
    3f9e:	490c      	ldr	r1, [pc, #48]	; (3fd0 <cli_Help+0x8c>)
    3fa0:	4640      	mov	r0, r8
    3fa2:	e007      	b.n	3fb4 <cli_Help+0x70>
    3fa4:	f000 fc60 	bl	4868 <strlen>
    3fa8:	462a      	mov	r2, r5
    3faa:	ab02      	add	r3, sp, #8
    3fac:	4909      	ldr	r1, [pc, #36]	; (3fd4 <cli_Help+0x90>)
    3fae:	4403      	add	r3, r0
    3fb0:	9700      	str	r7, [sp, #0]
    3fb2:	2001      	movs	r0, #1
    3fb4:	f7ff fcd8 	bl	3968 <rprintf>
    3fb8:	3414      	adds	r4, #20
    3fba:	e7df      	b.n	3f7c <cli_Help+0x38>
    3fbc:	4906      	ldr	r1, [pc, #24]	; (3fd8 <cli_Help+0x94>)
    3fbe:	2001      	movs	r0, #1
    3fc0:	f7ff fcd2 	bl	3968 <rprintf>
    3fc4:	2001      	movs	r0, #1
    3fc6:	b00a      	add	sp, #40	; 0x28
    3fc8:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    3fcc:	10000a70 	.word	0x10000a70
    3fd0:	000054a7 	.word	0x000054a7
    3fd4:	000054b3 	.word	0x000054b3
    3fd8:	000054c9 	.word	0x000054c9

Disassembly of section .text.cli_ArgsParse:

00003fdc <cli_ArgsParse>:
    3fdc:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
    3fe0:	4604      	mov	r4, r0
    3fe2:	0897      	lsrs	r7, r2, #2
    3fe4:	460e      	mov	r6, r1
    3fe6:	4691      	mov	r9, r2
    3fe8:	4698      	mov	r8, r3
    3fea:	f000 fc3d 	bl	4868 <strlen>
    3fee:	3801      	subs	r0, #1
    3ff0:	3f01      	subs	r7, #1
    3ff2:	1825      	adds	r5, r4, r0
    3ff4:	f04f 0a00 	mov.w	sl, #0
    3ff8:	42ac      	cmp	r4, r5
    3ffa:	d813      	bhi.n	4024 <cli_ArgsParse+0x48>
    3ffc:	782b      	ldrb	r3, [r5, #0]
    3ffe:	b18b      	cbz	r3, 4024 <cli_ArgsParse+0x48>
    4000:	f000 fbc4 	bl	478c <__locale_ctype_ptr>
    4004:	782b      	ldrb	r3, [r5, #0]
    4006:	4418      	add	r0, r3
    4008:	7843      	ldrb	r3, [r0, #1]
    400a:	071b      	lsls	r3, r3, #28
    400c:	d50a      	bpl.n	4024 <cli_ArgsParse+0x48>
    400e:	f805 a901 	strb.w	sl, [r5], #-1
    4012:	e7f1      	b.n	3ff8 <cli_ArgsParse+0x1c>
    4014:	f000 fbba 	bl	478c <__locale_ctype_ptr>
    4018:	782b      	ldrb	r3, [r5, #0]
    401a:	3401      	adds	r4, #1
    401c:	4418      	add	r0, r3
    401e:	7843      	ldrb	r3, [r0, #1]
    4020:	0718      	lsls	r0, r3, #28
    4022:	d503      	bpl.n	402c <cli_ArgsParse+0x50>
    4024:	7823      	ldrb	r3, [r4, #0]
    4026:	4625      	mov	r5, r4
    4028:	2b00      	cmp	r3, #0
    402a:	d1f3      	bne.n	4014 <cli_ArgsParse+0x38>
    402c:	2400      	movs	r4, #0
    402e:	464a      	mov	r2, r9
    4030:	f8c8 4000 	str.w	r4, [r8]
    4034:	4621      	mov	r1, r4
    4036:	4630      	mov	r0, r6
    4038:	f000 fbc8 	bl	47cc <memset>
    403c:	46a1      	mov	r9, r4
    403e:	e010      	b.n	4062 <cli_ArgsParse+0x86>
    4040:	f8d8 3000 	ldr.w	r3, [r8]
    4044:	6035      	str	r5, [r6, #0]
    4046:	3301      	adds	r3, #1
    4048:	429f      	cmp	r7, r3
    404a:	f106 0204 	add.w	r2, r6, #4
    404e:	f8c8 3000 	str.w	r3, [r8]
    4052:	d036      	beq.n	40c2 <cli_ArgsParse+0xe6>
    4054:	4616      	mov	r6, r2
    4056:	f815 3b01 	ldrb.w	r3, [r5], #1
    405a:	2b22      	cmp	r3, #34	; 0x22
    405c:	bf0c      	ite	eq
    405e:	2403      	moveq	r4, #3
    4060:	2402      	movne	r4, #2
    4062:	782b      	ldrb	r3, [r5, #0]
    4064:	b353      	cbz	r3, 40bc <cli_ArgsParse+0xe0>
    4066:	2c03      	cmp	r4, #3
    4068:	d8fc      	bhi.n	4064 <cli_ArgsParse+0x88>
    406a:	a201      	add	r2, pc, #4	; (adr r2, 4070 <cli_ArgsParse+0x94>)
    406c:	f852 f024 	ldr.w	pc, [r2, r4, lsl #2]
    4070:	00004081 	.word	0x00004081
    4074:	00004041 	.word	0x00004041
    4078:	00004091 	.word	0x00004091
    407c:	000040af 	.word	0x000040af
    4080:	f000 fb84 	bl	478c <__locale_ctype_ptr>
    4084:	782b      	ldrb	r3, [r5, #0]
    4086:	4418      	add	r0, r3
    4088:	7843      	ldrb	r3, [r0, #1]
    408a:	0719      	lsls	r1, r3, #28
    408c:	d514      	bpl.n	40b8 <cli_ArgsParse+0xdc>
    408e:	e011      	b.n	40b4 <cli_ArgsParse+0xd8>
    4090:	f000 fb7c 	bl	478c <__locale_ctype_ptr>
    4094:	782b      	ldrb	r3, [r5, #0]
    4096:	4418      	add	r0, r3
    4098:	7842      	ldrb	r2, [r0, #1]
    409a:	0712      	lsls	r2, r2, #28
    409c:	d503      	bpl.n	40a6 <cli_ArgsParse+0xca>
    409e:	f885 9000 	strb.w	r9, [r5]
    40a2:	2400      	movs	r4, #0
    40a4:	e006      	b.n	40b4 <cli_ArgsParse+0xd8>
    40a6:	2b22      	cmp	r3, #34	; 0x22
    40a8:	bf08      	it	eq
    40aa:	2403      	moveq	r4, #3
    40ac:	e002      	b.n	40b4 <cli_ArgsParse+0xd8>
    40ae:	2b22      	cmp	r3, #34	; 0x22
    40b0:	bf08      	it	eq
    40b2:	2402      	moveq	r4, #2
    40b4:	3501      	adds	r5, #1
    40b6:	e7d4      	b.n	4062 <cli_ArgsParse+0x86>
    40b8:	2401      	movs	r4, #1
    40ba:	e7d2      	b.n	4062 <cli_ArgsParse+0x86>
    40bc:	2001      	movs	r0, #1
    40be:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
    40c2:	f06f 003b 	mvn.w	r0, #59	; 0x3b
    40c6:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
    40ca:	bf00      	nop

Disassembly of section .text.cli_ArgsDispatch:

000040cc <cli_ArgsDispatch>:
    40cc:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
    40d0:	4604      	mov	r4, r0
    40d2:	460d      	mov	r5, r1
    40d4:	4616      	mov	r6, r2
    40d6:	4f20      	ldr	r7, [pc, #128]	; (4158 <cli_ArgsDispatch+0x8c>)
    40d8:	603c      	str	r4, [r7, #0]
    40da:	6820      	ldr	r0, [r4, #0]
    40dc:	2800      	cmp	r0, #0
    40de:	d036      	beq.n	414e <cli_ArgsDispatch+0x82>
    40e0:	6831      	ldr	r1, [r6, #0]
    40e2:	f7fc ffe3 	bl	10ac <strcmp>
    40e6:	bb80      	cbnz	r0, 414a <cli_ArgsDispatch+0x7e>
    40e8:	2d02      	cmp	r5, #2
    40ea:	d10c      	bne.n	4106 <cli_ArgsDispatch+0x3a>
    40ec:	491b      	ldr	r1, [pc, #108]	; (415c <cli_ArgsDispatch+0x90>)
    40ee:	6870      	ldr	r0, [r6, #4]
    40f0:	f7fc ffdc 	bl	10ac <strcmp>
    40f4:	b938      	cbnz	r0, 4106 <cli_ArgsDispatch+0x3a>
    40f6:	6922      	ldr	r2, [r4, #16]
    40f8:	4919      	ldr	r1, [pc, #100]	; (4160 <cli_ArgsDispatch+0x94>)
    40fa:	2001      	movs	r0, #1
    40fc:	f7ff fc34 	bl	3968 <rprintf>
    4100:	2001      	movs	r0, #1
    4102:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    4106:	7922      	ldrb	r2, [r4, #4]
    4108:	4295      	cmp	r5, r2
    410a:	dc07      	bgt.n	411c <cli_ArgsDispatch+0x50>
    410c:	4915      	ldr	r1, [pc, #84]	; (4164 <cli_ArgsDispatch+0x98>)
    410e:	2001      	movs	r0, #1
    4110:	f7ff fc2a 	bl	3968 <rprintf>
    4114:	f06f 003d 	mvn.w	r0, #61	; 0x3d
    4118:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    411c:	79a3      	ldrb	r3, [r4, #6]
    411e:	1e68      	subs	r0, r5, #1
    4120:	b91b      	cbnz	r3, 412a <cli_ArgsDispatch+0x5e>
    4122:	68a4      	ldr	r4, [r4, #8]
    4124:	4605      	mov	r5, r0
    4126:	3604      	adds	r6, #4
    4128:	e7d6      	b.n	40d8 <cli_ArgsDispatch+0xc>
    412a:	7962      	ldrb	r2, [r4, #5]
    412c:	4290      	cmp	r0, r2
    412e:	dd07      	ble.n	4140 <cli_ArgsDispatch+0x74>
    4130:	490d      	ldr	r1, [pc, #52]	; (4168 <cli_ArgsDispatch+0x9c>)
    4132:	2001      	movs	r0, #1
    4134:	f7ff fc18 	bl	3968 <rprintf>
    4138:	f06f 003c 	mvn.w	r0, #60	; 0x3c
    413c:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    4140:	68a3      	ldr	r3, [r4, #8]
    4142:	1d31      	adds	r1, r6, #4
    4144:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}
    4148:	4718      	bx	r3
    414a:	3414      	adds	r4, #20
    414c:	e7c5      	b.n	40da <cli_ArgsDispatch+0xe>
    414e:	f06f 003e 	mvn.w	r0, #62	; 0x3e
    4152:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
    4156:	bf00      	nop
    4158:	10000a70 	.word	0x10000a70
    415c:	000054f4 	.word	0x000054f4
    4160:	000054c5 	.word	0x000054c5
    4164:	000054f6 	.word	0x000054f6
    4168:	00005517 	.word	0x00005517

Disassembly of section .text.lcd_command:

0000416c <lcd_command>:
    416c:	b510      	push	{r4, lr}
    416e:	4604      	mov	r4, r0
    4170:	2000      	movs	r0, #0
    4172:	f000 f8ed 	bl	4350 <lcd_read>
    4176:	0603      	lsls	r3, r0, #24
    4178:	d4fa      	bmi.n	4170 <lcd_command+0x4>
    417a:	4620      	mov	r0, r4
    417c:	e8bd 4010 	ldmia.w	sp!, {r4, lr}
    4180:	2100      	movs	r1, #0
    4182:	f000 b92d 	b.w	43e0 <lcd_write>

Disassembly of section .text.lcd_PutChar:

00004186 <lcd_PutChar>:
    4186:	b510      	push	{r4, lr}
    4188:	4604      	mov	r4, r0
    418a:	2000      	movs	r0, #0
    418c:	f000 f8e0 	bl	4350 <lcd_read>
    4190:	0603      	lsls	r3, r0, #24
    4192:	d4fa      	bmi.n	418a <lcd_PutChar+0x4>
    4194:	b2e0      	uxtb	r0, r4
    4196:	2101      	movs	r1, #1
    4198:	f000 f922 	bl	43e0 <lcd_write>
    419c:	4620      	mov	r0, r4
    419e:	bd10      	pop	{r4, pc}

Disassembly of section .text.lcd_Clear:

000041a0 <lcd_Clear>:
    41a0:	b508      	push	{r3, lr}
    41a2:	2001      	movs	r0, #1
    41a4:	f7ff ffe2 	bl	416c <lcd_command>
    41a8:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
    41ac:	4801      	ldr	r0, [pc, #4]	; (41b4 <lcd_Clear+0x14>)
    41ae:	f7fd bddb 	b.w	1d68 <delay>
    41b2:	bf00      	nop
    41b4:	000101d0 	.word	0x000101d0

Disassembly of section .text.lcd_SetCursor:

000041b8 <lcd_SetCursor>:
    41b8:	4b08      	ldr	r3, [pc, #32]	; (41dc <lcd_SetCursor+0x24>)
    41ba:	2903      	cmp	r1, #3
    41bc:	781b      	ldrb	r3, [r3, #0]
    41be:	bf28      	it	cs
    41c0:	2103      	movcs	r1, #3
    41c2:	428b      	cmp	r3, r1
    41c4:	bf9c      	itt	ls
    41c6:	f103 33ff 	addls.w	r3, r3, #4294967295
    41ca:	b2d9      	uxtbls	r1, r3
    41cc:	4b04      	ldr	r3, [pc, #16]	; (41e0 <lcd_SetCursor+0x28>)
    41ce:	5c5b      	ldrb	r3, [r3, r1]
    41d0:	4418      	add	r0, r3
    41d2:	f060 007f 	orn	r0, r0, #127	; 0x7f
    41d6:	b2c0      	uxtb	r0, r0
    41d8:	f7ff bfc8 	b.w	416c <lcd_command>
    41dc:	100007f1 	.word	0x100007f1
    41e0:	100007ec 	.word	0x100007ec

Disassembly of section .text.lcd_Display:

000041e4 <lcd_Display>:
    41e4:	4b04      	ldr	r3, [pc, #16]	; (41f8 <lcd_Display+0x14>)
    41e6:	7818      	ldrb	r0, [r3, #0]
    41e8:	f040 0204 	orr.w	r2, r0, #4
    41ec:	f040 000c 	orr.w	r0, r0, #12
    41f0:	701a      	strb	r2, [r3, #0]
    41f2:	f7ff bfbb 	b.w	416c <lcd_command>
    41f6:	bf00      	nop
    41f8:	100007f0 	.word	0x100007f0

Disassembly of section .text.lcd_Init:

000041fc <lcd_Init>:
    41fc:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
    41fe:	460e      	mov	r6, r1
    4200:	4617      	mov	r7, r2
    4202:	4605      	mov	r5, r0
    4204:	f000 f890 	bl	4328 <lcd_config_ports>
    4208:	4c21      	ldr	r4, [pc, #132]	; (4290 <lcd_Init+0x94>)
    420a:	2e01      	cmp	r6, #1
    420c:	bf94      	ite	ls
    420e:	f047 0310 	orrls.w	r3, r7, #16
    4212:	f047 0318 	orrhi.w	r3, r7, #24
    4216:	7023      	strb	r3, [r4, #0]
    4218:	4b1e      	ldr	r3, [pc, #120]	; (4294 <lcd_Init+0x98>)
    421a:	2200      	movs	r2, #0
    421c:	701e      	strb	r6, [r3, #0]
    421e:	4b1e      	ldr	r3, [pc, #120]	; (4298 <lcd_Init+0x9c>)
    4220:	701a      	strb	r2, [r3, #0]
    4222:	2240      	movs	r2, #64	; 0x40
    4224:	709d      	strb	r5, [r3, #2]
    4226:	4415      	add	r5, r2
    4228:	705a      	strb	r2, [r3, #1]
    422a:	70dd      	strb	r5, [r3, #3]
    422c:	b12f      	cbz	r7, 423a <lcd_Init+0x3e>
    422e:	2e01      	cmp	r6, #1
    4230:	bf02      	ittt	eq
    4232:	7823      	ldrbeq	r3, [r4, #0]
    4234:	f043 0304 	orreq.w	r3, r3, #4
    4238:	7023      	strbeq	r3, [r4, #0]
    423a:	4818      	ldr	r0, [pc, #96]	; (429c <lcd_Init+0xa0>)
    423c:	f7fd fd94 	bl	1d68 <delay>
    4240:	2100      	movs	r1, #0
    4242:	2030      	movs	r0, #48	; 0x30
    4244:	f000 f8cc 	bl	43e0 <lcd_write>
    4248:	4815      	ldr	r0, [pc, #84]	; (42a0 <lcd_Init+0xa4>)
    424a:	f7fd fd8d 	bl	1d68 <delay>
    424e:	2100      	movs	r1, #0
    4250:	2030      	movs	r0, #48	; 0x30
    4252:	f000 f8c5 	bl	43e0 <lcd_write>
    4256:	f241 3088 	movw	r0, #5000	; 0x1388
    425a:	f7fd fd85 	bl	1d68 <delay>
    425e:	2100      	movs	r1, #0
    4260:	2030      	movs	r0, #48	; 0x30
    4262:	f000 f8bd 	bl	43e0 <lcd_write>
    4266:	7820      	ldrb	r0, [r4, #0]
    4268:	f040 0020 	orr.w	r0, r0, #32
    426c:	f7ff ff7e 	bl	416c <lcd_command>
    4270:	4b0c      	ldr	r3, [pc, #48]	; (42a4 <lcd_Init+0xa8>)
    4272:	2204      	movs	r2, #4
    4274:	701a      	strb	r2, [r3, #0]
    4276:	f7ff ffb5 	bl	41e4 <lcd_Display>
    427a:	f7ff ff91 	bl	41a0 <lcd_Clear>
    427e:	4b0a      	ldr	r3, [pc, #40]	; (42a8 <lcd_Init+0xac>)
    4280:	2202      	movs	r2, #2
    4282:	701a      	strb	r2, [r3, #0]
    4284:	2006      	movs	r0, #6
    4286:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
    428a:	f7ff bf6f 	b.w	416c <lcd_command>
    428e:	bf00      	nop
    4290:	100007f3 	.word	0x100007f3
    4294:	100007f1 	.word	0x100007f1
    4298:	100007ec 	.word	0x100007ec
    429c:	000a2990 	.word	0x000a2990
    42a0:	00028870 	.word	0x00028870
    42a4:	100007f0 	.word	0x100007f0
    42a8:	100007f2 	.word	0x100007f2

Disassembly of section .text.lcd_printfInit:

000042ac <lcd_printfInit>:
    42ac:	460b      	mov	r3, r1
    42ae:	4a04      	ldr	r2, [pc, #16]	; (42c0 <lcd_printfInit+0x14>)
    42b0:	7010      	strb	r0, [r2, #0]
    42b2:	4a04      	ldr	r2, [pc, #16]	; (42c4 <lcd_printfInit+0x18>)
    42b4:	b2d8      	uxtb	r0, r3
    42b6:	6011      	str	r1, [r2, #0]
    42b8:	4903      	ldr	r1, [pc, #12]	; (42c8 <lcd_printfInit+0x1c>)
    42ba:	f7ff b969 	b.w	3590 <rprintf_RegisterDev>
    42be:	bf00      	nop
    42c0:	100007f4 	.word	0x100007f4
    42c4:	10000a7c 	.word	0x10000a7c
    42c8:	00004187 	.word	0x00004187

Disassembly of section .text.lcd_printf:

000042cc <lcd_printf>:
    42cc:	b40f      	push	{r0, r1, r2, r3}
    42ce:	b510      	push	{r4, lr}
    42d0:	b096      	sub	sp, #88	; 0x58
    42d2:	aa18      	add	r2, sp, #96	; 0x60
    42d4:	f852 1b04 	ldr.w	r1, [r2], #4
    42d8:	2300      	movs	r3, #0
    42da:	f88d 3014 	strb.w	r3, [sp, #20]
    42de:	ac06      	add	r4, sp, #24
    42e0:	2301      	movs	r3, #1
    42e2:	a802      	add	r0, sp, #8
    42e4:	f88d 3013 	strb.w	r3, [sp, #19]
    42e8:	9201      	str	r2, [sp, #4]
    42ea:	9402      	str	r4, [sp, #8]
    42ec:	f7ff f97a 	bl	35e4 <doprint>
    42f0:	4620      	mov	r0, r4
    42f2:	f000 fab9 	bl	4868 <strlen>
    42f6:	4b09      	ldr	r3, [pc, #36]	; (431c <lcd_printf+0x50>)
    42f8:	2220      	movs	r2, #32
    42fa:	781b      	ldrb	r3, [r3, #0]
    42fc:	4298      	cmp	r0, r3
    42fe:	d202      	bcs.n	4306 <lcd_printf+0x3a>
    4300:	5422      	strb	r2, [r4, r0]
    4302:	3001      	adds	r0, #1
    4304:	e7fa      	b.n	42fc <lcd_printf+0x30>
    4306:	4b06      	ldr	r3, [pc, #24]	; (4320 <lcd_printf+0x54>)
    4308:	4622      	mov	r2, r4
    430a:	4906      	ldr	r1, [pc, #24]	; (4324 <lcd_printf+0x58>)
    430c:	7818      	ldrb	r0, [r3, #0]
    430e:	f7ff fb2b 	bl	3968 <rprintf>
    4312:	b016      	add	sp, #88	; 0x58
    4314:	e8bd 4010 	ldmia.w	sp!, {r4, lr}
    4318:	b004      	add	sp, #16
    431a:	4770      	bx	lr
    431c:	100007f4 	.word	0x100007f4
    4320:	10000a7c 	.word	0x10000a7c
    4324:	000054a0 	.word	0x000054a0

Disassembly of section .text.lcd_config_ports:

00004328 <lcd_config_ports>:
    4328:	4a08      	ldr	r2, [pc, #32]	; (434c <lcd_config_ports+0x24>)
    432a:	6813      	ldr	r3, [r2, #0]
    432c:	f423 737f 	bic.w	r3, r3, #1020	; 0x3fc
    4330:	6013      	str	r3, [r2, #0]
    4332:	f852 3c20 	ldr.w	r3, [r2, #-32]
    4336:	f043 73e0 	orr.w	r3, r3, #29360128	; 0x1c00000
    433a:	f842 3c20 	str.w	r3, [r2, #-32]
    433e:	f852 3c04 	ldr.w	r3, [r2, #-4]
    4342:	f043 7380 	orr.w	r3, r3, #16777216	; 0x1000000
    4346:	f842 3c04 	str.w	r3, [r2, #-4]
    434a:	4770      	bx	lr
    434c:	2009c040 	.word	0x2009c040

Disassembly of section .text.lcd_read:

00004350 <lcd_read>:
    4350:	4b20      	ldr	r3, [pc, #128]	; (43d4 <lcd_read+0x84>)
    4352:	f44f 0200 	mov.w	r2, #8388608	; 0x800000
    4356:	b510      	push	{r4, lr}
    4358:	601a      	str	r2, [r3, #0]
    435a:	4c1f      	ldr	r4, [pc, #124]	; (43d8 <lcd_read+0x88>)
    435c:	f44f 0280 	mov.w	r2, #4194304	; 0x400000
    4360:	b108      	cbz	r0, 4366 <lcd_read+0x16>
    4362:	601a      	str	r2, [r3, #0]
    4364:	e000      	b.n	4368 <lcd_read+0x18>
    4366:	6022      	str	r2, [r4, #0]
    4368:	f04f 7280 	mov.w	r2, #16777216	; 0x1000000
    436c:	2021      	movs	r0, #33	; 0x21
    436e:	601a      	str	r2, [r3, #0]
    4370:	f7fd fcfa 	bl	1d68 <delay>
    4374:	4b19      	ldr	r3, [pc, #100]	; (43dc <lcd_read+0x8c>)
    4376:	681a      	ldr	r2, [r3, #0]
    4378:	f412 7f00 	tst.w	r2, #512	; 0x200
    437c:	681a      	ldr	r2, [r3, #0]
    437e:	bf0c      	ite	eq
    4380:	2000      	moveq	r0, #0
    4382:	2080      	movne	r0, #128	; 0x80
    4384:	05d1      	lsls	r1, r2, #23
    4386:	681a      	ldr	r2, [r3, #0]
    4388:	bf44      	itt	mi
    438a:	f040 0040 	orrmi.w	r0, r0, #64	; 0x40
    438e:	b2c0      	uxtbmi	r0, r0
    4390:	0612      	lsls	r2, r2, #24
    4392:	681a      	ldr	r2, [r3, #0]
    4394:	bf48      	it	mi
    4396:	f040 0020 	orrmi.w	r0, r0, #32
    439a:	0651      	lsls	r1, r2, #25
    439c:	681a      	ldr	r2, [r3, #0]
    439e:	bf48      	it	mi
    43a0:	f040 0010 	orrmi.w	r0, r0, #16
    43a4:	0692      	lsls	r2, r2, #26
    43a6:	681a      	ldr	r2, [r3, #0]
    43a8:	bf48      	it	mi
    43aa:	f040 0008 	orrmi.w	r0, r0, #8
    43ae:	06d1      	lsls	r1, r2, #27
    43b0:	681a      	ldr	r2, [r3, #0]
    43b2:	681b      	ldr	r3, [r3, #0]
    43b4:	bf48      	it	mi
    43b6:	f040 0004 	orrmi.w	r0, r0, #4
    43ba:	0712      	lsls	r2, r2, #28
    43bc:	bf48      	it	mi
    43be:	f040 0002 	orrmi.w	r0, r0, #2
    43c2:	075b      	lsls	r3, r3, #29
    43c4:	f04f 7380 	mov.w	r3, #16777216	; 0x1000000
    43c8:	bf48      	it	mi
    43ca:	f040 0001 	orrmi.w	r0, r0, #1
    43ce:	6023      	str	r3, [r4, #0]
    43d0:	bd10      	pop	{r4, pc}
    43d2:	bf00      	nop
    43d4:	2009c038 	.word	0x2009c038
    43d8:	2009c03c 	.word	0x2009c03c
    43dc:	2009c054 	.word	0x2009c054

Disassembly of section .text.lcd_write:

000043e0 <lcd_write>:
    43e0:	4b2d      	ldr	r3, [pc, #180]	; (4498 <lcd_write+0xb8>)
    43e2:	b570      	push	{r4, r5, r6, lr}
    43e4:	681a      	ldr	r2, [r3, #0]
    43e6:	4c2d      	ldr	r4, [pc, #180]	; (449c <lcd_write+0xbc>)
    43e8:	f442 727f 	orr.w	r2, r2, #1020	; 0x3fc
    43ec:	601a      	str	r2, [r3, #0]
    43ee:	f44f 0200 	mov.w	r2, #8388608	; 0x800000
    43f2:	6022      	str	r2, [r4, #0]
    43f4:	461d      	mov	r5, r3
    43f6:	f44f 0280 	mov.w	r2, #4194304	; 0x400000
    43fa:	3b08      	subs	r3, #8
    43fc:	b109      	cbz	r1, 4402 <lcd_write+0x22>
    43fe:	601a      	str	r2, [r3, #0]
    4400:	e000      	b.n	4404 <lcd_write+0x24>
    4402:	6022      	str	r2, [r4, #0]
    4404:	f010 0f80 	tst.w	r0, #128	; 0x80
    4408:	bf14      	ite	ne
    440a:	4925      	ldrne	r1, [pc, #148]	; (44a0 <lcd_write+0xc0>)
    440c:	4925      	ldreq	r1, [pc, #148]	; (44a4 <lcd_write+0xc4>)
    440e:	f44f 7200 	mov.w	r2, #512	; 0x200
    4412:	f010 0f40 	tst.w	r0, #64	; 0x40
    4416:	600a      	str	r2, [r1, #0]
    4418:	bf14      	ite	ne
    441a:	4921      	ldrne	r1, [pc, #132]	; (44a0 <lcd_write+0xc0>)
    441c:	4921      	ldreq	r1, [pc, #132]	; (44a4 <lcd_write+0xc4>)
    441e:	f44f 7280 	mov.w	r2, #256	; 0x100
    4422:	f010 0f20 	tst.w	r0, #32
    4426:	600a      	str	r2, [r1, #0]
    4428:	bf14      	ite	ne
    442a:	491d      	ldrne	r1, [pc, #116]	; (44a0 <lcd_write+0xc0>)
    442c:	491d      	ldreq	r1, [pc, #116]	; (44a4 <lcd_write+0xc4>)
    442e:	2280      	movs	r2, #128	; 0x80
    4430:	f010 0f10 	tst.w	r0, #16
    4434:	600a      	str	r2, [r1, #0]
    4436:	bf14      	ite	ne
    4438:	4919      	ldrne	r1, [pc, #100]	; (44a0 <lcd_write+0xc0>)
    443a:	491a      	ldreq	r1, [pc, #104]	; (44a4 <lcd_write+0xc4>)
    443c:	2240      	movs	r2, #64	; 0x40
    443e:	f010 0f08 	tst.w	r0, #8
    4442:	600a      	str	r2, [r1, #0]
    4444:	bf14      	ite	ne
    4446:	4916      	ldrne	r1, [pc, #88]	; (44a0 <lcd_write+0xc0>)
    4448:	4916      	ldreq	r1, [pc, #88]	; (44a4 <lcd_write+0xc4>)
    444a:	2220      	movs	r2, #32
    444c:	f010 0f04 	tst.w	r0, #4
    4450:	600a      	str	r2, [r1, #0]
    4452:	bf14      	ite	ne
    4454:	4912      	ldrne	r1, [pc, #72]	; (44a0 <lcd_write+0xc0>)
    4456:	4913      	ldreq	r1, [pc, #76]	; (44a4 <lcd_write+0xc4>)
    4458:	2210      	movs	r2, #16
    445a:	f010 0f02 	tst.w	r0, #2
    445e:	600a      	str	r2, [r1, #0]
    4460:	bf14      	ite	ne
    4462:	490f      	ldrne	r1, [pc, #60]	; (44a0 <lcd_write+0xc0>)
    4464:	490f      	ldreq	r1, [pc, #60]	; (44a4 <lcd_write+0xc4>)
    4466:	2208      	movs	r2, #8
    4468:	f010 0f01 	tst.w	r0, #1
    446c:	600a      	str	r2, [r1, #0]
    446e:	bf14      	ite	ne
    4470:	490b      	ldrne	r1, [pc, #44]	; (44a0 <lcd_write+0xc0>)
    4472:	490c      	ldreq	r1, [pc, #48]	; (44a4 <lcd_write+0xc4>)
    4474:	2204      	movs	r2, #4
    4476:	f04f 7680 	mov.w	r6, #16777216	; 0x1000000
    447a:	600a      	str	r2, [r1, #0]
    447c:	2021      	movs	r0, #33	; 0x21
    447e:	601e      	str	r6, [r3, #0]
    4480:	f7fd fc72 	bl	1d68 <delay>
    4484:	6026      	str	r6, [r4, #0]
    4486:	2021      	movs	r0, #33	; 0x21
    4488:	f7fd fc6e 	bl	1d68 <delay>
    448c:	682b      	ldr	r3, [r5, #0]
    448e:	f423 737f 	bic.w	r3, r3, #1020	; 0x3fc
    4492:	602b      	str	r3, [r5, #0]
    4494:	bd70      	pop	{r4, r5, r6, pc}
    4496:	bf00      	nop
    4498:	2009c040 	.word	0x2009c040
    449c:	2009c03c 	.word	0x2009c03c
    44a0:	2009c058 	.word	0x2009c058
    44a4:	2009c05c 	.word	0x2009c05c

Disassembly of section .text.servus_SetPin:

000044a8 <servus_SetPin>:
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
	if (servoCtrl[servo-1].enable) return pdON; else return pdOFF;
}

static inline void servus_SetPin(uint servo, uint act) {
	act &= servoCtrl[servo].enable;
    44a8:	2314      	movs	r3, #20
    44aa:	4343      	muls	r3, r0
    44ac:	4a14      	ldr	r2, [pc, #80]	; (4500 <servus_SetPin+0x58>)
    44ae:	58d3      	ldr	r3, [r2, r3]
    44b0:	f003 0301 	and.w	r3, r3, #1
    44b4:	4019      	ands	r1, r3

	if (servo == 0) {
    44b6:	b910      	cbnz	r0, 44be <servus_SetPin+0x16>
    44b8:	f44f 6380 	mov.w	r3, #1024	; 0x400
    44bc:	e00c      	b.n	44d8 <servus_SetPin+0x30>
		if (act) SERVO1_SET = SERVO1; else SERVO1_CLR = SERVO1;
	}

	#if (SERVO_N_MODULE > 1)
	if (servo == 1) {
    44be:	2801      	cmp	r0, #1
    44c0:	d102      	bne.n	44c8 <servus_SetPin+0x20>
    44c2:	f44f 7300 	mov.w	r3, #512	; 0x200
    44c6:	e007      	b.n	44d8 <servus_SetPin+0x30>
		if (act) SERVO2_SET = SERVO2; else SERVO2_CLR = SERVO2;
	}
	#endif

	#if (SERVO_N_MODULE > 2)
	if (servo == 2) {
    44c8:	2802      	cmp	r0, #2
    44ca:	d102      	bne.n	44d2 <servus_SetPin+0x2a>
    44cc:	f44f 7380 	mov.w	r3, #256	; 0x100
    44d0:	e002      	b.n	44d8 <servus_SetPin+0x30>
		if (act) SERVO3_SET = SERVO3; else SERVO3_CLR = SERVO3;
	}
	#endif

	#if (SERVO_N_MODULE > 3)
	if (servo == 3) {
    44d2:	2803      	cmp	r0, #3
    44d4:	d106      	bne.n	44e4 <servus_SetPin+0x3c>
    44d6:	2310      	movs	r3, #16
	}
	#endif

	#if (SERVO_N_MODULE > 6)
	if (servo == 6) {
		if (act) SERVO7_SET = SERVO7; else SERVO7_CLR = SERVO7;
    44d8:	b109      	cbz	r1, 44de <servus_SetPin+0x36>
    44da:	4a0a      	ldr	r2, [pc, #40]	; (4504 <servus_SetPin+0x5c>)
    44dc:	e000      	b.n	44e0 <servus_SetPin+0x38>
    44de:	4a0a      	ldr	r2, [pc, #40]	; (4508 <servus_SetPin+0x60>)
    44e0:	6013      	str	r3, [r2, #0]
	}
	#endif
}
    44e2:	4770      	bx	lr
		if (act) SERVO4_SET = SERVO4; else SERVO4_CLR = SERVO4;
	}
	#endif

	#if (SERVO_N_MODULE > 4)
	if (servo == 4) {
    44e4:	2804      	cmp	r0, #4
    44e6:	d101      	bne.n	44ec <servus_SetPin+0x44>
    44e8:	2302      	movs	r3, #2
    44ea:	e7f5      	b.n	44d8 <servus_SetPin+0x30>
		if (act) SERVO5_SET = SERVO5; else SERVO5_CLR = SERVO5;
	}
	#endif

	#if (SERVO_N_MODULE > 5)
	if (servo == 5) {
    44ec:	2805      	cmp	r0, #5
    44ee:	d101      	bne.n	44f4 <servus_SetPin+0x4c>
    44f0:	2301      	movs	r3, #1
    44f2:	e7f1      	b.n	44d8 <servus_SetPin+0x30>
		if (act) SERVO6_SET = SERVO6; else SERVO6_CLR = SERVO6;
	}
	#endif

	#if (SERVO_N_MODULE > 6)
	if (servo == 6) {
    44f4:	2806      	cmp	r0, #6
    44f6:	d102      	bne.n	44fe <servus_SetPin+0x56>
    44f8:	f44f 4380 	mov.w	r3, #16384	; 0x4000
    44fc:	e7ec      	b.n	44d8 <servus_SetPin+0x30>
    44fe:	4770      	bx	lr
    4500:	10000a80 	.word	0x10000a80
    4504:	2009c038 	.word	0x2009c038
    4508:	2009c03c 	.word	0x2009c03c

Disassembly of section .text.servus_CallSytem:

0000450c <servus_CallSytem>:
	#endif
}

// Tick de sistema para controle dos servos e medições dos módulos de ultrasom.
//	Esta função será chamada a cada 10us pelo timer do uC
static void servus_CallSytem(void) {
    450c:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
	// ######################################################################################################
	// CONTROLE DOS SERVOS
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    450e:	2400      	movs	r4, #0
			servus_SetPin(x, pdOFF);
		} else if (servoCtrl[x].pos_count < servoCtrl[x].pos) {
			servoCtrl[x].pos_count+=10;
			servus_SetPin(x, pdON);
		} else {
			servoCtrl[x].interval_count = 0;
    4510:	4625      	mov	r5, r4
//	Esta função será chamada a cada 10us pelo timer do uC
static void servus_CallSytem(void) {
	// ######################################################################################################
	// CONTROLE DOS SERVOS
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		if (servoCtrl[x].interval_count < INTERVAL_COUNT-servoCtrl[x].pos) {
    4512:	4e12      	ldr	r6, [pc, #72]	; (455c <servus_CallSytem+0x50>)
    4514:	2714      	movs	r7, #20
    4516:	fb07 6304 	mla	r3, r7, r4, r6
    451a:	6919      	ldr	r1, [r3, #16]
    451c:	685a      	ldr	r2, [r3, #4]
    451e:	f5c2 429c 	rsb	r2, r2, #19968	; 0x4e00
    4522:	3220      	adds	r2, #32
    4524:	4291      	cmp	r1, r2
    4526:	d205      	bcs.n	4534 <servus_CallSytem+0x28>
			servoCtrl[x].interval_count+=10;
    4528:	691a      	ldr	r2, [r3, #16]
			servoCtrl[x].pos_count=0;
			servus_SetPin(x, pdOFF);
    452a:	2100      	movs	r1, #0
static void servus_CallSytem(void) {
	// ######################################################################################################
	// CONTROLE DOS SERVOS
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		if (servoCtrl[x].interval_count < INTERVAL_COUNT-servoCtrl[x].pos) {
			servoCtrl[x].interval_count+=10;
    452c:	320a      	adds	r2, #10
    452e:	611a      	str	r2, [r3, #16]
			servoCtrl[x].pos_count=0;
    4530:	60dd      	str	r5, [r3, #12]
    4532:	e007      	b.n	4544 <servus_CallSytem+0x38>
			servus_SetPin(x, pdOFF);
		} else if (servoCtrl[x].pos_count < servoCtrl[x].pos) {
    4534:	68d9      	ldr	r1, [r3, #12]
    4536:	685a      	ldr	r2, [r3, #4]
    4538:	4291      	cmp	r1, r2
    453a:	d207      	bcs.n	454c <servus_CallSytem+0x40>
			servoCtrl[x].pos_count+=10;
    453c:	68da      	ldr	r2, [r3, #12]
			servus_SetPin(x, pdON);
    453e:	2101      	movs	r1, #1
		if (servoCtrl[x].interval_count < INTERVAL_COUNT-servoCtrl[x].pos) {
			servoCtrl[x].interval_count+=10;
			servoCtrl[x].pos_count=0;
			servus_SetPin(x, pdOFF);
		} else if (servoCtrl[x].pos_count < servoCtrl[x].pos) {
			servoCtrl[x].pos_count+=10;
    4540:	320a      	adds	r2, #10
    4542:	60da      	str	r2, [r3, #12]
			servus_SetPin(x, pdON);
    4544:	4620      	mov	r0, r4
    4546:	f7ff ffaf 	bl	44a8 <servus_SetPin>
    454a:	e002      	b.n	4552 <servus_CallSytem+0x46>
		} else {
			servoCtrl[x].interval_count = 0;
    454c:	611d      	str	r5, [r3, #16]
			servoCtrl[x].pos = servoCtrl[x].pos_load;
    454e:	689a      	ldr	r2, [r3, #8]
    4550:	605a      	str	r2, [r3, #4]
// Tick de sistema para controle dos servos e medições dos módulos de ultrasom.
//	Esta função será chamada a cada 10us pelo timer do uC
static void servus_CallSytem(void) {
	// ######################################################################################################
	// CONTROLE DOS SERVOS
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    4552:	3401      	adds	r4, #1
    4554:	2c07      	cmp	r4, #7
    4556:	d1de      	bne.n	4516 <servus_CallSytem+0xa>
		us04.Fdetected = 0;;		// Sinaliza para não há objeto detectado
		us04.Ftriggerok = 0;		// Inicializar pedido de trigger
	} else
		us04.FCont++;
	#endif //#if (US04_USES == pdON)
}
    4558:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
    455a:	bf00      	nop
    455c:	10000a80 	.word	0x10000a80

Disassembly of section .text.servus_Init:

00004560 <servus_Init>:

static tServoCtrl servoCtrl[SERVO_N_MODULE];

static void servus_CallSytem(void);

void servus_Init(uint en) {
    4560:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    4562:	2300      	movs	r3, #0
		servoCtrl[x].interval_count = 0;
    4564:	461d      	mov	r5, r3
		servoCtrl[x].pos_count= 0;
		servoCtrl[x].pos= 1500;
    4566:	f240 56dc 	movw	r6, #1500	; 0x5dc

static void servus_CallSytem(void);

void servus_Init(uint en) {
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		servoCtrl[x].interval_count = 0;
    456a:	4c27      	ldr	r4, [pc, #156]	; (4608 <servus_Init+0xa8>)
    456c:	2714      	movs	r7, #20
		servoCtrl[x].pos_count= 0;
		servoCtrl[x].pos= 1500;
		servoCtrl[x].enable = en;
    456e:	f000 0001 	and.w	r0, r0, #1

static void servus_CallSytem(void);

void servus_Init(uint en) {
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
		servoCtrl[x].interval_count = 0;
    4572:	fb07 f103 	mul.w	r1, r7, r3
    4576:	1862      	adds	r2, r4, r1
    4578:	6115      	str	r5, [r2, #16]
		servoCtrl[x].pos_count= 0;
    457a:	60d5      	str	r5, [r2, #12]
		servoCtrl[x].pos= 1500;
    457c:	6056      	str	r6, [r2, #4]
		servoCtrl[x].enable = en;
    457e:	5c62      	ldrb	r2, [r4, r1]
static tServoCtrl servoCtrl[SERVO_N_MODULE];

static void servus_CallSytem(void);

void servus_Init(uint en) {
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    4580:	3301      	adds	r3, #1
		servoCtrl[x].interval_count = 0;
		servoCtrl[x].pos_count= 0;
		servoCtrl[x].pos= 1500;
		servoCtrl[x].enable = en;
    4582:	f360 0200 	bfi	r2, r0, #0, #1
static tServoCtrl servoCtrl[SERVO_N_MODULE];

static void servus_CallSytem(void);

void servus_Init(uint en) {
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    4586:	2b07      	cmp	r3, #7
		servoCtrl[x].interval_count = 0;
		servoCtrl[x].pos_count= 0;
		servoCtrl[x].pos= 1500;
		servoCtrl[x].enable = en;
    4588:	5462      	strb	r2, [r4, r1]
static tServoCtrl servoCtrl[SERVO_N_MODULE];

static void servus_CallSytem(void);

void servus_Init(uint en) {
	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
    458a:	d1f2      	bne.n	4572 <servus_Init+0x12>
	US04_DBGDETECTED_DIR |= US04_DBGDETECTED;
	US04_DBGDETECTED_CLR = US04_DBGDETECTED;
	#endif
	#endif //#if (US04_USES == pdON)

	servo1_SetupPorts();
    458c:	4b1f      	ldr	r3, [pc, #124]	; (460c <servus_Init+0xac>)
    458e:	f44f 6180 	mov.w	r1, #1024	; 0x400
    4592:	681a      	ldr	r2, [r3, #0]
    4594:	f442 6280 	orr.w	r2, r2, #1024	; 0x400
    4598:	601a      	str	r2, [r3, #0]
    459a:	4a1d      	ldr	r2, [pc, #116]	; (4610 <servus_Init+0xb0>)
    459c:	6011      	str	r1, [r2, #0]
	#if (SERVO_N_MODULE > 1)
	servo2_SetupPorts();
    459e:	6819      	ldr	r1, [r3, #0]
    45a0:	f441 7100 	orr.w	r1, r1, #512	; 0x200
    45a4:	6019      	str	r1, [r3, #0]
    45a6:	f44f 7100 	mov.w	r1, #512	; 0x200
    45aa:	6011      	str	r1, [r2, #0]
	#endif
	#if (SERVO_N_MODULE > 2)
	servo3_SetupPorts();
    45ac:	6819      	ldr	r1, [r3, #0]
    45ae:	f441 7180 	orr.w	r1, r1, #256	; 0x100
    45b2:	6019      	str	r1, [r3, #0]
    45b4:	f44f 7180 	mov.w	r1, #256	; 0x100
    45b8:	6011      	str	r1, [r2, #0]
	#endif
	#if (SERVO_N_MODULE > 3)
	servo4_SetupPorts();
    45ba:	6819      	ldr	r1, [r3, #0]
    45bc:	f041 0110 	orr.w	r1, r1, #16
    45c0:	6019      	str	r1, [r3, #0]
    45c2:	2110      	movs	r1, #16
    45c4:	6011      	str	r1, [r2, #0]
	#endif
	#if (SERVO_N_MODULE > 4)
	servo5_SetupPorts();
    45c6:	6819      	ldr	r1, [r3, #0]
    45c8:	f041 0102 	orr.w	r1, r1, #2
    45cc:	6019      	str	r1, [r3, #0]
    45ce:	2102      	movs	r1, #2
    45d0:	6011      	str	r1, [r2, #0]
	#endif
	#if (SERVO_N_MODULE > 5)
	servo6_SetupPorts();
    45d2:	6819      	ldr	r1, [r3, #0]
    45d4:	f041 0101 	orr.w	r1, r1, #1
    45d8:	6019      	str	r1, [r3, #0]
    45da:	2101      	movs	r1, #1
    45dc:	6011      	str	r1, [r2, #0]
	#endif
	#if (SERVO_N_MODULE > 6)
	servo7_SetupPorts();
    45de:	6818      	ldr	r0, [r3, #0]
    45e0:	f440 4080 	orr.w	r0, r0, #16384	; 0x4000
    45e4:	6018      	str	r0, [r3, #0]
    45e6:	f44f 4380 	mov.w	r3, #16384	; 0x4000
    45ea:	6013      	str	r3, [r2, #0]
	#endif

	servus_TimeInit();
    45ec:	4608      	mov	r0, r1
    45ee:	2203      	movs	r2, #3
    45f0:	f7fd fd64 	bl	20bc <timer1_Init>
    45f4:	20fa      	movs	r0, #250	; 0xfa
    45f6:	f7fd fd89 	bl	210c <timer1_SetMatch0>
	servus_SetIntHandler(servus_CallSytem);
}
    45fa:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}
	#if (SERVO_N_MODULE > 6)
	servo7_SetupPorts();
	#endif

	servus_TimeInit();
	servus_SetIntHandler(servus_CallSytem);
    45fe:	4905      	ldr	r1, [pc, #20]	; (4614 <servus_Init+0xb4>)
    4600:	2000      	movs	r0, #0
    4602:	f7fd bd49 	b.w	2098 <timer1_SetIntHandler>
    4606:	bf00      	nop
    4608:	10000a80 	.word	0x10000a80
    460c:	2009c020 	.word	0x2009c020
    4610:	2009c03c 	.word	0x2009c03c
    4614:	0000450d 	.word	0x0000450d

Disassembly of section .text.servus_SetPos:

00004618 <servus_SetPos>:
// 				us: tempo em microsegundos
// Retorna: pdPASS se o comando foi executado com sucesso
//			errDEVICE_NOT_FOUND: Se o servo não existe
//			errDEVICE_VALUE_INVALID: Valor inválido
int servus_SetPos(uint servo, int us) {
	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    4618:	3801      	subs	r0, #1
    461a:	2806      	cmp	r0, #6
    461c:	d80c      	bhi.n	4638 <servus_SetPos+0x20>
	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
    461e:	f640 3354 	movw	r3, #2900	; 0xb54
    4622:	f1a1 0264 	sub.w	r2, r1, #100	; 0x64
    4626:	429a      	cmp	r2, r3
    4628:	d808      	bhi.n	463c <servus_SetPos+0x24>
	servoCtrl[servo-1].pos_load = us;
    462a:	4b06      	ldr	r3, [pc, #24]	; (4644 <servus_SetPos+0x2c>)
    462c:	2214      	movs	r2, #20
    462e:	fb02 3000 	mla	r0, r2, r0, r3
    4632:	6081      	str	r1, [r0, #8]

	return pdPASS;
    4634:	2001      	movs	r0, #1
    4636:	4770      	bx	lr
// 				us: tempo em microsegundos
// Retorna: pdPASS se o comando foi executado com sucesso
//			errDEVICE_NOT_FOUND: Se o servo não existe
//			errDEVICE_VALUE_INVALID: Valor inválido
int servus_SetPos(uint servo, int us) {
	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    4638:	4803      	ldr	r0, [pc, #12]	; (4648 <servus_SetPos+0x30>)
    463a:	4770      	bx	lr
	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
    463c:	f46f 7097 	mvn.w	r0, #302	; 0x12e
	servoCtrl[servo-1].pos_load = us;

	return pdPASS;
}
    4640:	4770      	bx	lr
    4642:	bf00      	nop
    4644:	10000a80 	.word	0x10000a80
    4648:	fffffed4 	.word	0xfffffed4

Disassembly of section .text.servus_Enable:

0000464c <servus_Enable>:
// Habilita não a saida PWM para o servo
// Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
// Retorna: pdPASS se o comando foi executado com sucesso
//			errDEVICE_NOT_FOUND: Se o servo não existe
int servus_Enable(uint servo, uint en) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    464c:	3801      	subs	r0, #1
    464e:	2806      	cmp	r0, #6
    4650:	d80b      	bhi.n	466a <servus_Enable+0x1e>
	servoCtrl[servo-1].enable = (en == 0)?0:1;
    4652:	2314      	movs	r3, #20
    4654:	4358      	muls	r0, r3
    4656:	4a06      	ldr	r2, [pc, #24]	; (4670 <servus_Enable+0x24>)
    4658:	3100      	adds	r1, #0
    465a:	5c13      	ldrb	r3, [r2, r0]
    465c:	bf18      	it	ne
    465e:	2101      	movne	r1, #1
    4660:	f361 0300 	bfi	r3, r1, #0, #1
    4664:	5413      	strb	r3, [r2, r0]
	return pdPASS;
    4666:	2001      	movs	r0, #1
    4668:	4770      	bx	lr
// Habilita não a saida PWM para o servo
// Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
// Retorna: pdPASS se o comando foi executado com sucesso
//			errDEVICE_NOT_FOUND: Se o servo não existe
int servus_Enable(uint servo, uint en) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    466a:	4802      	ldr	r0, [pc, #8]	; (4674 <servus_Enable+0x28>)
	servoCtrl[servo-1].enable = (en == 0)?0:1;
	return pdPASS;
}
    466c:	4770      	bx	lr
    466e:	bf00      	nop
    4670:	10000a80 	.word	0x10000a80
    4674:	fffffed4 	.word	0xfffffed4

Disassembly of section .text.servus_Enabled:

00004678 <servus_Enabled>:
// Checa se o servo está habilitado ou não
// Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
// Retorna: pdON pu pdOFF
//			errDEVICE_NOT_FOUND: Se o servo não existe
int servus_Enabled(uint servo) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    4678:	3801      	subs	r0, #1
    467a:	2806      	cmp	r0, #6
	if (servoCtrl[servo-1].enable) return pdON; else return pdOFF;
    467c:	bf9f      	itttt	ls
    467e:	2314      	movls	r3, #20
    4680:	4358      	mulls	r0, r3
    4682:	4b03      	ldrls	r3, [pc, #12]	; (4690 <servus_Enabled+0x18>)
    4684:	5818      	ldrls	r0, [r3, r0]
    4686:	bf94      	ite	ls
    4688:	f000 0001 	andls.w	r0, r0, #1
// Checa se o servo está habilitado ou não
// Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
// Retorna: pdON pu pdOFF
//			errDEVICE_NOT_FOUND: Se o servo não existe
int servus_Enabled(uint servo) {
	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
    468c:	4801      	ldrhi	r0, [pc, #4]	; (4694 <servus_Enabled+0x1c>)
	if (servoCtrl[servo-1].enable) return pdON; else return pdOFF;
}
    468e:	4770      	bx	lr
    4690:	10000a80 	.word	0x10000a80
    4694:	fffffed4 	.word	0xfffffed4

Disassembly of section .text.__swap:

00004698 <__swap>:
}

static u8 __swap(u8 v) {
	#if defined(usesSSP) // bus ssp não tem transmissão LSB
	u8 aux = 0;
	int x; for (x=0; x < 8; x++) if ((v&_BV(x)) > 0) aux |= _BV(7-x);
    4698:	2300      	movs	r3, #0
	return j;
}

static u8 __swap(u8 v) {
	#if defined(usesSSP) // bus ssp não tem transmissão LSB
	u8 aux = 0;
    469a:	461a      	mov	r2, r3
	int j = joy; // retorna com o valor da tecla pressionada
	joy = 0; // sinaliza que não tem mais tecla sendo pressionada
	return j;
}

static u8 __swap(u8 v) {
    469c:	b510      	push	{r4, lr}
	#if defined(usesSSP) // bus ssp não tem transmissão LSB
	u8 aux = 0;
	int x; for (x=0; x < 8; x++) if ((v&_BV(x)) > 0) aux |= _BV(7-x);
    469e:	2401      	movs	r4, #1
    46a0:	fa04 f103 	lsl.w	r1, r4, r3
    46a4:	4201      	tst	r1, r0
    46a6:	bf1e      	ittt	ne
    46a8:	f1c3 0107 	rsbne	r1, r3, #7
    46ac:	fa04 f101 	lslne.w	r1, r4, r1
    46b0:	430a      	orrne	r2, r1
    46b2:	f103 0301 	add.w	r3, r3, #1
    46b6:	bf18      	it	ne
    46b8:	b2d2      	uxtbne	r2, r2
    46ba:	2b08      	cmp	r3, #8
    46bc:	d1f0      	bne.n	46a0 <__swap+0x8>
	return aux;
	#else
	return v;
	#endif
}
    46be:	4610      	mov	r0, r2
    46c0:	bd10      	pop	{r4, pc}

Disassembly of section .text.joy_Init:

000046c4 <joy_Init>:
// Descrição: Configura o pino CHIP SELECT
//------------------------------------------------------------------------------------------------------------------

// O joystick trabalha com CPOL=1 e CPHA=1.
void joy_Init(void) {
	joyps_SetupPorts();	// Configurar o pino CS
    46c4:	4a06      	ldr	r2, [pc, #24]	; (46e0 <joy_Init+0x1c>)
    46c6:	6813      	ldr	r3, [r2, #0]
    46c8:	f443 2380 	orr.w	r3, r3, #262144	; 0x40000
    46cc:	6013      	str	r3, [r2, #0]
    joyps_Disable();
    46ce:	4b05      	ldr	r3, [pc, #20]	; (46e4 <joy_Init+0x20>)
    46d0:	f44f 2280 	mov.w	r2, #262144	; 0x40000
    46d4:	601a      	str	r2, [r3, #0]
    joy = 0;
    46d6:	4b04      	ldr	r3, [pc, #16]	; (46e8 <joy_Init+0x24>)
    46d8:	2200      	movs	r2, #0
    46da:	601a      	str	r2, [r3, #0]
    46dc:	4770      	bx	lr
    46de:	bf00      	nop
    46e0:	2009c000 	.word	0x2009c000
    46e4:	2009c018 	.word	0x2009c018
    46e8:	10000b10 	.word	0x10000b10

Disassembly of section .text.joy_Read:

000046ec <joy_Read>:
}

// retonra com o valor da tecla pressionada.
int joy_Read(void) {
	int j = joy; // retorna com o valor da tecla pressionada
    46ec:	4b02      	ldr	r3, [pc, #8]	; (46f8 <joy_Read+0xc>)
	joy = 0; // sinaliza que não tem mais tecla sendo pressionada
    46ee:	2200      	movs	r2, #0
    joy = 0;
}

// retonra com o valor da tecla pressionada.
int joy_Read(void) {
	int j = joy; // retorna com o valor da tecla pressionada
    46f0:	6818      	ldr	r0, [r3, #0]
	joy = 0; // sinaliza que não tem mais tecla sendo pressionada
    46f2:	601a      	str	r2, [r3, #0]
	return j;
}
    46f4:	4770      	bx	lr
    46f6:	bf00      	nop
    46f8:	10000b10 	.word	0x10000b10

Disassembly of section .text.joy_Tick:

000046fc <joy_Tick>:
//				}
void joy_Tick(void) {
	// LEITURA DO JOYSTICK a cada 16ms
	// 	Ler a cada 16ms já é o suficiente para uma boa resposta
	static volatile uint timeRead = 0;
	if (timeRead) timeRead--;
    46fc:	4b19      	ldr	r3, [pc, #100]	; (4764 <joy_Tick+0x68>)
//				void joy_Tick2(void) {
//					ssp1_Init(SSP0_MASTER, SSP0_CPOL_H|SSP0_CPHA_H|SSP0_DSS_8); // inicar o barramento SPI a 400Khz
//				    joy_Tick();
//					ssp1_Init(SSP0_MASTER, SSP0_STANDARD); // inicar o barramento SPI a 400Khz
//				}
void joy_Tick(void) {
    46fe:	b570      	push	{r4, r5, r6, lr}
	// LEITURA DO JOYSTICK a cada 16ms
	// 	Ler a cada 16ms já é o suficiente para uma boa resposta
	static volatile uint timeRead = 0;
	if (timeRead) timeRead--;
    4700:	681a      	ldr	r2, [r3, #0]
    4702:	b112      	cbz	r2, 470a <joy_Tick+0xe>
    4704:	681a      	ldr	r2, [r3, #0]
    4706:	3a01      	subs	r2, #1
    4708:	601a      	str	r2, [r3, #0]
	if (timeRead == 0) {
    470a:	681d      	ldr	r5, [r3, #0]
    470c:	bb4d      	cbnz	r5, 4762 <joy_Tick+0x66>
		timeRead = 16;
    470e:	4b15      	ldr	r3, [pc, #84]	; (4764 <joy_Tick+0x68>)
    4710:	2210      	movs	r2, #16
    4712:	601a      	str	r2, [r3, #0]
	return v;
	#endif
}

static int __joy_ReadControls(int* ctrl ) {
	joyps_Enable();
    4714:	4b14      	ldr	r3, [pc, #80]	; (4768 <joy_Tick+0x6c>)
    4716:	f44f 2680 	mov.w	r6, #262144	; 0x40000
    471a:	601e      	str	r6, [r3, #0]
	joyps_TransferByte(__swap(0x1)); // Envio o byte para inicializar transferencia ao controle PS1
    471c:	2001      	movs	r0, #1
    471e:	f7ff ffbb 	bl	4698 <__swap>
    4722:	f7fd fd6d 	bl	2200 <ssp1_TransferByte>
	int id = __swap(joyps_TransferByte(__swap(0x42))); // Envio o byte de quesito de dados do controle PS1 e recebo o ID do controle
    4726:	2042      	movs	r0, #66	; 0x42
    4728:	f7ff ffb6 	bl	4698 <__swap>
    472c:	f7fd fd68 	bl	2200 <ssp1_TransferByte>
	joyps_TransferByte(0);	// Envio qualquer valor para o controle para receber dele o indicador de inicio de transmissão.
    4730:	4628      	mov	r0, r5
    4732:	f7fd fd65 	bl	2200 <ssp1_TransferByte>
	int b1 = __swap(~joyps_TransferByte(0)); // Envio qualquer valor para o controle para receber dele o primeiro comando que representa os estados dos botões.
    4736:	4628      	mov	r0, r5
    4738:	f7fd fd62 	bl	2200 <ssp1_TransferByte>
    473c:	43c0      	mvns	r0, r0
    473e:	b2c0      	uxtb	r0, r0
    4740:	f7ff ffaa 	bl	4698 <__swap>
    4744:	4604      	mov	r4, r0
	int b2 = __swap(~joyps_TransferByte(0)); // Envio qualquer valor para o controle para receber dele o segundo comando que representa os estados dos botões.
    4746:	4628      	mov	r0, r5
    4748:	f7fd fd5a 	bl	2200 <ssp1_TransferByte>
    474c:	43c0      	mvns	r0, r0
    474e:	b2c0      	uxtb	r0, r0
    4750:	f7ff ffa2 	bl	4698 <__swap>
	// somente para joystick com suporte analógico.
	//	int a1 = __swap(~joyps_TransferByte(0));
	//	int a2 = __swap(~joyps_TransferByte(0));
	//	int a3 = __swap(~joyps_TransferByte(0));
	//	int a4 = __swap(~joyps_TransferByte(0));
	joyps_Disable();
    4754:	4b05      	ldr	r3, [pc, #20]	; (476c <joy_Tick+0x70>)
	if (timeRead) timeRead--;
	if (timeRead == 0) {
		timeRead = 16;
		int buttons;
		__joy_ReadControls(&buttons);
		if (buttons > 0) joy = buttons;
    4756:	ea50 2004 	orrs.w	r0, r0, r4, lsl #8
	// somente para joystick com suporte analógico.
	//	int a1 = __swap(~joyps_TransferByte(0));
	//	int a2 = __swap(~joyps_TransferByte(0));
	//	int a3 = __swap(~joyps_TransferByte(0));
	//	int a4 = __swap(~joyps_TransferByte(0));
	joyps_Disable();
    475a:	601e      	str	r6, [r3, #0]
	if (timeRead) timeRead--;
	if (timeRead == 0) {
		timeRead = 16;
		int buttons;
		__joy_ReadControls(&buttons);
		if (buttons > 0) joy = buttons;
    475c:	bf1c      	itt	ne
    475e:	4b04      	ldrne	r3, [pc, #16]	; (4770 <joy_Tick+0x74>)
    4760:	6018      	strne	r0, [r3, #0]
    4762:	bd70      	pop	{r4, r5, r6, pc}
    4764:	10000b0c 	.word	0x10000b0c
    4768:	2009c01c 	.word	0x2009c01c
    476c:	2009c018 	.word	0x2009c018
    4770:	10000b10 	.word	0x10000b10

Disassembly of section .text.__get_current_locale:

00004774 <__get_current_locale>:
    4774:	4a03      	ldr	r2, [pc, #12]	; (4784 <__get_current_locale+0x10>)
    4776:	4b04      	ldr	r3, [pc, #16]	; (4788 <__get_current_locale+0x14>)
    4778:	6812      	ldr	r2, [r2, #0]
    477a:	6b50      	ldr	r0, [r2, #52]	; 0x34
    477c:	2800      	cmp	r0, #0
    477e:	bf08      	it	eq
    4780:	4618      	moveq	r0, r3
    4782:	4770      	bx	lr
    4784:	10000618 	.word	0x10000618
    4788:	10000084 	.word	0x10000084

Disassembly of section .text.__locale_ctype_ptr:

0000478c <__locale_ctype_ptr>:
    478c:	b508      	push	{r3, lr}
    478e:	4b03      	ldr	r3, [pc, #12]	; (479c <__locale_ctype_ptr+0x10>)
    4790:	6818      	ldr	r0, [r3, #0]
    4792:	f7ff ffef 	bl	4774 <__get_current_locale>
    4796:	f8d0 00ec 	ldr.w	r0, [r0, #236]	; 0xec
    479a:	bd08      	pop	{r3, pc}
    479c:	10000618 	.word	0x10000618

Disassembly of section .text.__ascii_mbtowc:

000047a0 <__ascii_mbtowc>:
    47a0:	b082      	sub	sp, #8
    47a2:	b149      	cbz	r1, 47b8 <__ascii_mbtowc+0x18>
    47a4:	b15a      	cbz	r2, 47be <__ascii_mbtowc+0x1e>
    47a6:	b16b      	cbz	r3, 47c4 <__ascii_mbtowc+0x24>
    47a8:	7813      	ldrb	r3, [r2, #0]
    47aa:	600b      	str	r3, [r1, #0]
    47ac:	7812      	ldrb	r2, [r2, #0]
    47ae:	1c10      	adds	r0, r2, #0
    47b0:	bf18      	it	ne
    47b2:	2001      	movne	r0, #1
    47b4:	b002      	add	sp, #8
    47b6:	4770      	bx	lr
    47b8:	a901      	add	r1, sp, #4
    47ba:	2a00      	cmp	r2, #0
    47bc:	d1f3      	bne.n	47a6 <__ascii_mbtowc+0x6>
    47be:	4610      	mov	r0, r2
    47c0:	b002      	add	sp, #8
    47c2:	4770      	bx	lr
    47c4:	f06f 0001 	mvn.w	r0, #1
    47c8:	e7f4      	b.n	47b4 <__ascii_mbtowc+0x14>
    47ca:	bf00      	nop

Disassembly of section .text.memset:

000047cc <memset>:
    47cc:	b470      	push	{r4, r5, r6}
    47ce:	0784      	lsls	r4, r0, #30
    47d0:	d046      	beq.n	4860 <memset+0x94>
    47d2:	1e54      	subs	r4, r2, #1
    47d4:	2a00      	cmp	r2, #0
    47d6:	d041      	beq.n	485c <memset+0x90>
    47d8:	b2cd      	uxtb	r5, r1
    47da:	4603      	mov	r3, r0
    47dc:	e002      	b.n	47e4 <memset+0x18>
    47de:	1e62      	subs	r2, r4, #1
    47e0:	b3e4      	cbz	r4, 485c <memset+0x90>
    47e2:	4614      	mov	r4, r2
    47e4:	f803 5b01 	strb.w	r5, [r3], #1
    47e8:	079a      	lsls	r2, r3, #30
    47ea:	d1f8      	bne.n	47de <memset+0x12>
    47ec:	2c03      	cmp	r4, #3
    47ee:	d92e      	bls.n	484e <memset+0x82>
    47f0:	b2cd      	uxtb	r5, r1
    47f2:	ea45 2505 	orr.w	r5, r5, r5, lsl #8
    47f6:	2c0f      	cmp	r4, #15
    47f8:	ea45 4505 	orr.w	r5, r5, r5, lsl #16
    47fc:	d919      	bls.n	4832 <memset+0x66>
    47fe:	4626      	mov	r6, r4
    4800:	f103 0210 	add.w	r2, r3, #16
    4804:	3e10      	subs	r6, #16
    4806:	2e0f      	cmp	r6, #15
    4808:	f842 5c10 	str.w	r5, [r2, #-16]
    480c:	f842 5c0c 	str.w	r5, [r2, #-12]
    4810:	f842 5c08 	str.w	r5, [r2, #-8]
    4814:	f842 5c04 	str.w	r5, [r2, #-4]
    4818:	f102 0210 	add.w	r2, r2, #16
    481c:	d8f2      	bhi.n	4804 <memset+0x38>
    481e:	f1a4 0210 	sub.w	r2, r4, #16
    4822:	f022 020f 	bic.w	r2, r2, #15
    4826:	f004 040f 	and.w	r4, r4, #15
    482a:	3210      	adds	r2, #16
    482c:	2c03      	cmp	r4, #3
    482e:	4413      	add	r3, r2
    4830:	d90d      	bls.n	484e <memset+0x82>
    4832:	461e      	mov	r6, r3
    4834:	4622      	mov	r2, r4
    4836:	3a04      	subs	r2, #4
    4838:	2a03      	cmp	r2, #3
    483a:	f846 5b04 	str.w	r5, [r6], #4
    483e:	d8fa      	bhi.n	4836 <memset+0x6a>
    4840:	1f22      	subs	r2, r4, #4
    4842:	f022 0203 	bic.w	r2, r2, #3
    4846:	3204      	adds	r2, #4
    4848:	4413      	add	r3, r2
    484a:	f004 0403 	and.w	r4, r4, #3
    484e:	b12c      	cbz	r4, 485c <memset+0x90>
    4850:	b2c9      	uxtb	r1, r1
    4852:	441c      	add	r4, r3
    4854:	f803 1b01 	strb.w	r1, [r3], #1
    4858:	42a3      	cmp	r3, r4
    485a:	d1fb      	bne.n	4854 <memset+0x88>
    485c:	bc70      	pop	{r4, r5, r6}
    485e:	4770      	bx	lr
    4860:	4614      	mov	r4, r2
    4862:	4603      	mov	r3, r0
    4864:	e7c2      	b.n	47ec <memset+0x20>
    4866:	bf00      	nop

Disassembly of section .text.strlen:

00004868 <strlen>:
    4868:	f020 0103 	bic.w	r1, r0, #3
    486c:	f010 0003 	ands.w	r0, r0, #3
    4870:	f1c0 0000 	rsb	r0, r0, #0
    4874:	f851 3b04 	ldr.w	r3, [r1], #4
    4878:	f100 0c04 	add.w	ip, r0, #4
    487c:	ea4f 0ccc 	mov.w	ip, ip, lsl #3
    4880:	f06f 0200 	mvn.w	r2, #0
    4884:	bf1c      	itt	ne
    4886:	fa22 f20c 	lsrne.w	r2, r2, ip
    488a:	4313      	orrne	r3, r2
    488c:	f04f 0c01 	mov.w	ip, #1
    4890:	ea4c 2c0c 	orr.w	ip, ip, ip, lsl #8
    4894:	ea4c 4c0c 	orr.w	ip, ip, ip, lsl #16
    4898:	eba3 020c 	sub.w	r2, r3, ip
    489c:	ea22 0203 	bic.w	r2, r2, r3
    48a0:	ea12 12cc 	ands.w	r2, r2, ip, lsl #7
    48a4:	bf04      	itt	eq
    48a6:	f851 3b04 	ldreq.w	r3, [r1], #4
    48aa:	3004      	addeq	r0, #4
    48ac:	d0f4      	beq.n	4898 <strlen+0x30>
    48ae:	f1c2 0100 	rsb	r1, r2, #0
    48b2:	ea02 0201 	and.w	r2, r2, r1
    48b6:	fab2 f282 	clz	r2, r2
    48ba:	f1c2 021f 	rsb	r2, r2, #31
    48be:	eb00 00d2 	add.w	r0, r0, r2, lsr #3
    48c2:	4770      	bx	lr

Disassembly of section .text.__ascii_wctomb:

000048c4 <__ascii_wctomb>:
    48c4:	b121      	cbz	r1, 48d0 <__ascii_wctomb+0xc>
    48c6:	2aff      	cmp	r2, #255	; 0xff
    48c8:	d804      	bhi.n	48d4 <__ascii_wctomb+0x10>
    48ca:	700a      	strb	r2, [r1, #0]
    48cc:	2001      	movs	r0, #1
    48ce:	4770      	bx	lr
    48d0:	4608      	mov	r0, r1
    48d2:	4770      	bx	lr
    48d4:	238a      	movs	r3, #138	; 0x8a
    48d6:	6003      	str	r3, [r0, #0]
    48d8:	f04f 30ff 	mov.w	r0, #4294967295
    48dc:	4770      	bx	lr
    48de:	bf00      	nop
